Borek Opublikowano 4 Stycznia 2006 Udostępnij Opublikowano 4 Stycznia 2006 Witam. Zgłaszałem się o pomoc do Ranmy, ale jest niedostępny na GG, a więc sięgnę po pomoc tutaj :) Potrzebuje skrypt PHP taki żeby wyszukiwał linijkę tekstu z pliku i ją kasował: Mam np. na serwerze plik "tablice.txt", ten plik zawiera np. takie dane: Krzesło Ława Fotel Pianino Teraz wysyłam linkiem na strone zmienną $Fotel i chcę żeby skrypt wyszukał w pliku identycznej z nazwy linijki jak wysłana zmienna czyli Fotel. Nastepnie żeby skasował tą zmienną i resztę podsunął do góry. Plik wówczas powinien zawierać takie dane: Krzesło Ława Pianino Czy ktoś może mi pomóc ? Będę naprawdę bardzo wdzięczny :) Pozdrawiam! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 5 Stycznia 2006 Udostępnij Opublikowano 5 Stycznia 2006 Wczytaj na początku wszystkie linijki potem wybrane skasuj (ustaw na wartość 0 albo '' :P) i zapisz znowu te co dalej istnieją do pliku. Pisać kod? :) Jeśli dobrze myślę to potrzebujesz tego do twojej gry multiplay? Wydaje mi się że łatwiej jest to zrobić na bazie MySQL. Na plikach trzeba się troche pomęczyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 5 Stycznia 2006 Autor Udostępnij Opublikowano 5 Stycznia 2006 Tymon tyle to ja wiem :) Ja wiem jak mam to zrobić tylko nie znam tych funkcji php. Także poproszę o kod :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 5 Stycznia 2006 Potwierdzam, na plikach niewydajne to będzie. Mysql lub Sqlite powinny wystarczyć. Na plikach to będzie to wyglądać tak: <?php $obiekt = $_GET['obiekt']; $tablica = file( 'tablice.txt' ); if ( $klucz = array_search( $obiekt."\n", $tablica ) ) { unset( $tablica[$klucz] ); } $plik = fopen('tablice.txt','w'); foreach( $tablica as $v ) { fputs( $plik, $v ); } fclose($plik); ?> No i wysylasz zapytanie: index.php?obiekt=Fotel Pamietaj jeszcze by stosowany edytor nie zapisywal nowych linii w trybie DOS ( 2 znaki ) tylko raczej w trybie unix ( 1 znak końca linii ), bo inaczej skrypt nie bedzie dzialac. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 5 Stycznia 2006 Udostępnij Opublikowano 5 Stycznia 2006 Ah, to sorka :) Myślałem że znasz się na PHP. Jeśli chcesz to mogę napisać skrypt dla MySQL, tylko powiedz jakie dane zapisywać w bazie danych. Ewentualnie byśmy jeszcze na GG to ustalili ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 5 Stycznia 2006 W skrypcie, którym podałem, brakuje flock. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 5 Stycznia 2006 Autor Udostępnij Opublikowano 5 Stycznia 2006 Hmmm nie chce dzialac wyslalem zmienna .php?obiekt=Fotel i nie kasuje z pliku :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 5 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 5 Stycznia 2006 Przed foreach wpisz var_dump( $obiekt ); i zobacz czy coś wyświetli. Jeżeli będzie ten Fotel, to tak jak wspomniałem, plik tekstowy z danymi ma zapisywane na końcu linii dwa znaki końca linii, a nie jeden. Niestety nie pamiętam kodowania tych znaków i posłużyłem tylko "\n" do prostego usuwania jednego znaku, ponieważ funkcja file zwraca tablice, ale nie usuwa znakow konca linii przez co porownanie zmiennych moze sie nie powiesc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Borek Opublikowano 5 Stycznia 2006 Autor Udostępnij Opublikowano 5 Stycznia 2006 Na stronie wyskoczylo mi string(5) "Fotel" Ale z pliku dalej sie nie skasowalo Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 6 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 6 Stycznia 2006 Czyli masz źle zapisany plik tekstowy z nazwami. Tak jak pisałem wcześnie, program ten musi zapisywać na końcach linii nie dwa a jeden znak przejścia do nowej linii. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
BeWuO Opublikowano 6 Stycznia 2006 Udostępnij Opublikowano 6 Stycznia 2006 w Windowsowym zapisie to jest: \r\n Poza tym, ja bym proponował zapisanie słow obok siebie i rozdzielenie np znakiem | Dzieki temu bedzie łatwiej modyfikować plik. Poza tym w Twoim Ranma skrypcie chyba nie wziąłeś pod uwagę, że po usunieciu bedzie mniej linijek i jak bedzie te nowe wstawiał, to na koncu zostaną te, które były wcześniej. Po prostu nie nadpisze ich. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 6 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 6 Stycznia 2006 Nadpisze, w końcu otwiera plik w trybie write, a nie append. A co się tyczy |, to moze juz lepiej korzystac z serialize i unserialize. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
BeWuO Opublikowano 7 Stycznia 2006 Udostępnij Opublikowano 7 Stycznia 2006 To jak otwiera w trybie "w", to czyści go, a jak w "a" to nie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 7 Stycznia 2006 Filar Społeczności Udostępnij Opublikowano 7 Stycznia 2006 Tak. Trochę krótka ta odpowiedź. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się