Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla, która sprawdza, czy takie coś już było
Forum PHP.pl > Forum > PHP
-=Lukasz=-
Witam.



Wie ktoś jak napisać pętle, która sprawdza z danego pliki .txt, czy dane słowo/link wpisany do formularza znajduje się w bazie?
phpion
Cytat(-=Lukasz=- @ 6.11.2008, 18:45:04 ) *
sprawdza z danego pliki .txt, czy dane słowo/link wpisany do formularza znajduje się w bazie?

Ale namieszałeś:
- formularz -> plik
- formularz -> baza
- plik -> baza
? Czym jest źródło danych i gdzie ma sprawdzać?
-=Lukasz=-
Po wpisaniu do textu w formularz.php leci do warunki.txt i sprawdza, czy dany link może być dodany do bazy, potem zapisuje go do baza.txt

Ma sprawdzać, czy w baza.txt istnieje dany plik/link wpisany do formularza.
phpion
http://pl.php.net/manual/pl/function.fgets.php

Masz tu idealny przykład (przykład nr 1). Wystarczy dodać warunek $buffer == $dane_z_formularza i w przypadku spełnienia w którymkolwiek wierszu nie dopuścić do zapisu danych. Dodajesz 2 linijki i po zabawie (+ oczywiście zapis do pliku).
-=Lukasz=-
Nie mam pojęcia jak to zrobić. :/



Pomógłbyś? Byłbym bardzo wdzięczny.
phpion
Cytat(-=Lukasz=- @ 6.11.2008, 19:53:16 ) *
Nie mam pojęcia jak to zrobić. :/

Cóż, bywa.

Cytat(-=Lukasz=- @ 6.11.2008, 19:53:16 ) *
Pomógłbyś?

Wydaje mi się, że pomogłem w wystarczającym stopniu.

Cytat(-=Lukasz=- @ 6.11.2008, 19:53:16 ) *
Byłbym bardzo wdzięczny.

To niestety nie będziesz.

Podałem ci link do gotowego skryptu odczytującego plik linia po linii. Wystarczy, że dodasz warunek, o którym pisałem wcześniej. Jeśli warunek jest spełniony ustawiasz wartość $znaleziono = true (wcześniej, przed fopen() dajesz $znaleziono = false aby zainicjować zmienną odpowiednią wartością) i robisz break aby niepotrzebnie nie sprawdzać dalej. Po wyjściu z pętli i po zamknięciu pliku sprawdzasz wartość $znaleziono. Jeśli to false to dopisujesz nowe dane do pliku (bo nie znaleziono ich w pliku); w przeciwnym wypadku nie robisz nic.

Próbuj!
marcio
Eh.. nie chce napisac jakiejs bomby bo nie sprawdzalem ani nic a dzis nie ufam mojej logice tu masz jak by to mialo mniej wiecej wygladac ale nie wiem czy zadziala:
  1. <?php
  2. if(isset($_POST['sprawdz'])) {
  3.  
  4. $file = file('plik.txt');
  5. $explode = explode('r\n', $file);
  6. $count = count($explode);
  7.  
  8. for($i = 0; $i < $count; $i++) if($explode[$i] != $_POST['link']) {
  9.  
  10. $fp = fopen('plik.txt', 'w+');
  11. if(fwrite($fp, $_POST['link'].'r\n')) echo('Zapisano link');
  12. fclose($fp);
  13.  
  14.   }
  15. else echo('Taki link juz istnieje');
  16. }
  17. ?>

Oczywiscie dodaj jakas filtracje to raz dwa to dodaj blokowanie pliku podczac zapisywania.

P.S i nie wiem czy nie bedziesz musial zmienic zeby zapisywalo zawsze na koncu/poczatku pliku bo nie pamietam na pamiec czy tryb "w+" to robi, i kazdy link w pliku plik.txt powinien byc w nowej lini
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.