Skocz do zawartości

Potrzebuje Skryptu PHP


Borek

Rekomendowane odpowiedzi

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

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

  • Filar Społeczności

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

  • Filar Społeczności

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...