Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sprawdzenie czy dana liczba jest w pliku txt
Forum PHP.pl > Forum > Przedszkole
shaolin33
witam,

potrzebuje skrypt który po wpisaniu w pole liczby i wciśnięcie przycisku sprawdz,skypt sprawdzi czy dana liczba istnieje w pliku txt

prosze o pomoc
Damonsson
Jakim budżetem dysponujesz?
shaolin33
dysponuje budżetem charytatywnym smile.gifsmile.gif
CuteOne
Charytatywnie:
- poczytaj o fopen/fread/fclose lub file_get_contents
- poczytaj o strpos
- pomijam formularze bo to podstawa podstaw
shaolin33
witam ponownie,

zamiast sprawdzać zapisuje mi do pliku

pomocy:(


  1. <form action="rejestr_zaj_kom.php" method="post">
  2.  
  3. <div>Numer:<input id="numer" name="numer" /></div>
  4. <br><div><input type="submit" value="SPRAWDZ" /></div>
  5.  


  1. $file=fopen("c:/rejestr_zaj_kom.txt", "w");
  2.  
  3. $dane="pesel";
  4.  
  5.  
  6. if(fwrite($file, $dane))
  7. echo "Podany numer PESEL klienta istnieje w bazie";
  8. else
  9. "Nie ma takiego klienta o podanym numrze PESEL";
  10. fclose($file);
nospor
Sam zapisuje do pliku a potem się dziwi że mu zapisuje..... Chłopie, jak używasz jakis funkcji to patrz co one robią. Od tego masz manuala.
shaolin33
  1.  
  2. $pesel=$_POST['pesel'];
  3.  
  4.  
  5. $file=fopen("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", "w");
  6.  
  7. $dane="pesel"; .$pesel.;
  8.  
  9.  
  10. if(fread($file, $dane))
  11. echo "Podany numer PESEL klienta istnieje w bazie";
  12. else
  13. "Nie ma takiego klienta o podanym numrze PESEL";
  14. fclose($file);
  15.  
  16.  
  17.  



zgadza się zamiast fwrite musze użyć fread:)

tylko za bardzo nie wiem jak zrobić żeby on mi sprawdzał dane w txt ktore są zapisane w każdej linii jedna dana (jeden pod drugim) questionmark.gif

CuteOne
http://php.net/manual/pl/function.file.php

ps. zacznij używać manuala... to - fread($file, $dane) nie ma w ogóle sensu
b4rt3kk
Cytat(shaolin33 @ 17.10.2012, 10:45:28 ) *
  1.  
  2. $pesel=$_POST['pesel'];
  3.  
  4.  
  5. $file=fopen("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", "w");
  6.  
  7. $dane="pesel"; .$pesel.;
  8.  
  9.  
  10. if(fread($file, $dane))
  11. echo "Podany numer PESEL klienta istnieje w bazie";
  12. else
  13. "Nie ma takiego klienta o podanym numrze PESEL";
  14. fclose($file);
  15.  
  16.  
  17.  



zgadza się zamiast fwrite musze użyć fread:)

tylko za bardzo nie wiem jak zrobić żeby on mi sprawdzał dane w txt ktore są zapisane w każdej linii jedna dana (jeden pod drugim) questionmark.gif


  1. $pesel='/^'.$_POST['pesel'].'$/'; // możesz tak dostosować pattern żeby szukało też tylko po fragmencie wpisanego peselu
  2.  
  3. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  4.  
  5. foreach ($file as $key => $value) {
  6. if (preg_match($pesel, $value) == 1) echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  7. }
shaolin33
no i czemu to nie działa ?


  1. $pesel='/^'.$_POST['pesel'].'$/'; // możesz tak dostosować pattern żeby szukało też tylko po fragmencie wpisanego peselu
  2.  
  3. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  4.  
  5. foreach ($file as $key => $value) {
  6. if (preg_match($pesel, $value) == 1) echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  7. }
  8.  
b4rt3kk
Jakiś kod błędu może?

  1. $pesel='/^'.trim($_POST['pesel']).'$/'; // możesz tak dostosować pattern żeby szukało też tylko po fragmencie wpisanego peselu
  2.  
  3. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  4.  
  5. foreach ($file as $key => $value) {
  6. if (preg_match($pesel, $value) == 1) echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  7. }


jeśli wciskasz enter przy wysyłaniu formularza to dochodzi znak nowej linii, może w tym rzecz, bo u mnie jakoś działa.
shaolin33
u mnie nie wyskakuje żaden komunikat,
wprowadziłem testowa 3 numery do pliku txt i zaden tekst informacyjny się nei pojawia ze pesel jest w pliku lub go nie ma sad.gif

b4rt3kk
Cytat(shaolin33 @ 17.10.2012, 11:19:15 ) *
u mnie nie wyskakuje żaden komunikat,
wprowadziłem testowa 3 numery do pliku txt i zaden tekst informacyjny się nei pojawia ze pesel jest w pliku lub go nie ma sad.gif


Oczywiście wysyłasz numer formularzem? A nie odpalasz tylko skrypt? Zmień pattern tak dla próby czy coś znajdzie i wstaw wartość, która jest w pliku.

  1. $pesel='/^123456789$/'; // w tej linii wstaw znaną wartość z pliku txt
  2. // jeśli chcesz by szukało fragmentu wpisanego peselu to pattern musi wyglądać tak:
  3. $pesel='/123/';
shaolin33
w pliku txt wpkisanem sobei linijka pod lionijka takie cyfry:


84040656774
83111111111
82090878788
12345



w php tak:

  1. $pesel='/^12345$/';
  2.  
  3.  
  4. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  5.  
  6. foreach ($file as $key => $value) {
  7. if (preg_match($pesel, $value) == 1) echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  8. }



i nadal nic nie wyswietla sad.gif


a formularz html wyglada tak:


  1. <form action="rejestr_zaj_kom.php" method="post">
  2.  
  3. <div>Numer:<input id="numer" name="numer" /></div>
  4. <br><div><input type="submit" value="SPRAWDZ" /></div>


b4rt3kk
Formularz miał input 'numer' a powinno być 'pesel'?

  1. <form action="rejestr_zaj_kom.php" method="post">
  2.  
  3. <div>Numer:<input id="numer" name="pesel" /></div>
  4. <br><div><input type="submit" value="SPRAWDZ" /></div>
shaolin33
tak teraz działa,

a czy teraz moge tez dopisać info z komunikatem że NIE MA W PLIKU ?

mam skorzystać z else ?

else
"Nie ma w pliku!";
b4rt3kk
Nie, bo wyświetlało by dla każdej linii, że nie ma w pliku. Coś w tym stylu zrób:

  1. $counter = 0;
  2.  
  3. foreach ($file as $key => $value) {
  4. if (preg_match($pesel, $value) == 1) {
  5. echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  6. $counter++;
  7. }
  8. }
  9.  
  10. if ($counter == 0) echo 'nie znaleziono';
shaolin33
jednak coś nei gra


oto kod raz jeszcze

  1.  
  2.  
  3. $pesel='/^'.trim($_POST['pesel']).'$/';
  4.  
  5.  
  6. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  7.  
  8. foreach ($file as $key => $value) {
  9. if (preg_match($pesel, $value) == 1) echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  10. }
  11.  
  12.  


formularz html mam poprawiony i jest ok sad.gif



  1.  
  2.  
  3. $pesel='/^'.trim($_POST['pesel']).'$/';
  4.  
  5.  
  6. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  7.  
  8. $counter = 0;
  9.  
  10. foreach ($file as $key => $value) {
  11. if (preg_match($pesel, $value) == 1) {
  12. echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  13. $counter++;
  14. }
  15. }
  16.  
  17. if ($counter == 0) echo 'nie znaleziono';
  18.  


za każdym wyskakuje komunikat że nie znaleziona

nawet jak zostawie puste pole

oraz nawet jak wpisze wartość taką ktora jest w pliku txt sad.gifsad.gif


b4rt3kk
To pokaż jeszcze ten kod formularza. I wyświetl sobie wszystkie dane.

  1. echo $pesel='/^'.trim($_POST['pesel']).'$/';
  2.  
  3.  
  4. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  5.  
  6. $counter = 0;
  7.  
  8. foreach ($file as $key => $value) {
  9. echo 'linia '.$key.' porownuje '.$value.' z '.$pesel.'<br/>';
  10. if (preg_match($pesel, $value) == 1) {
  11. echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  12. $counter++;
  13. }
  14. }
  15.  
  16. if ($counter == 0) echo 'nie znaleziono';
shaolin33
rejestr_zaj.html

  1. <form action="rejestr_zaj_kom.php" method="post">
  2. <br>
  3. <b>REJEST ZAJĘĆ KOMORNICZYCH</b>
  4. <br>
  5. <br>
  6. <br>
  7. Wpisz numer PESEL klienta aby sprawdzić czy nie widnieje w rejestrze:
  8. <br>
  9. <br>
  10. <div>Numer PESEL:<input id="pesel" name="pesel" /></div>
  11. <br><div><input type="submit" value="SPRAWDZ" /></div>



rejestr_zaj_kom.php

  1. $pesel='/^'.trim($_POST['pesel']).'$/';
  2.  
  3.  
  4. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  5.  
  6. $counter = 0;
  7.  
  8. foreach ($file as $key => $value) {
  9. if (preg_match($pesel, $value) == 1) {
  10. echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  11. $counter++;
  12. }
  13. }
  14.  
  15. if ($counter == 0) echo 'nie znaleziono';



w pliku mam w linii:

12345

w formularzu wpisuje: 12345


[po wyswietleniu danych pokazuje mi:

/^12345$/nie znaleziono


dziwne jest to ze dodalem kilak linijek


12345456678
83111111111
82090878788
12345
1122334455
00000
11111



dokładnei 7 linijek

wpisuje w formualrzu

11111 i mi wyswietla ze znalazlo w 6 lini a jest w 7 a te pozostale jak wpisze to ich nie znajduje

w ogole

b4rt3kk
Wniosek z tego taki, że coś nie tak jest z plikiem, może zła ścieżka? Bo pętla nie wykonuje się ani razu.

Cytat(shaolin33 @ 17.10.2012, 13:23:47 ) *
rejestr_zaj.html

  1. <form action="rejestr_zaj_kom.php" method="post">
  2. <br>
  3. <b>REJEST ZAJĘĆ KOMORNICZYCH</b>
  4. <br>
  5. <br>
  6. <br>
  7. Wpisz numer PESEL klienta aby sprawdzić czy nie widnieje w rejestrze:
  8. <br>
  9. <br>
  10. <div>Numer PESEL:<input id="pesel" name="pesel" /></div>
  11. <br><div><input type="submit" value="SPRAWDZ" /></div>



rejestr_zaj_kom.php

  1. $pesel='/^'.trim($_POST['pesel']).'$/';
  2.  
  3.  
  4. $file=file("c:/usr/apache/httpd/html/kredyty/rejestr_zaj_kom.txt", FILE_IGNORE_NEW_LINES);
  5.  
  6. $counter = 0;
  7.  
  8. foreach ($file as $key => $value) {
  9. if (preg_match($pesel, $value) == 1) {
  10. echo "Znalazlem PESEL <b>{$_POST['pesel']}</b> w linii <b>{$key}</b><br/>";
  11. $counter++;
  12. }
  13. }
  14.  
  15. if ($counter == 0) echo 'nie znaleziono';



w pliku mam w linii:

12345

w formularzu wpisuje: 12345


[po wyswietleniu danych pokazuje mi:

/^12345$/nie znaleziono


dziwne jest to ze dodalem kilak linijek


12345456678
83111111111
82090878788
12345
1122334455
00000
11111



dokładnei 7 linijek

wpisuje w formualrzu

11111 i mi wyswietla ze znalazlo w 6 lini a jest w 7 a te pozostale jak wpisze to ich nie znajduje

w ogole


Tablice są indeksowane od zera, tak więc dobrze pokazuje, że w 6 linii. Zmień linię:

  1. $pesel='/'.trim($_POST['pesel']).'/';


będzie szukało bez uwzględnienia początku i końca ciągu.
shaolin33
at last smile.gifsmile.gif
dzieki wielkie,
oj duzo mi brakuje do podstaw smile.gifsmile.gif
b4rt3kk
Cytat(shaolin33 @ 17.10.2012, 13:50:16 ) *
at last smile.gifsmile.gif
dzieki wielkie,
oj duzo mi brakuje do podstaw smile.gifsmile.gif


Myślałem że chodzi Ci o znalezienie nie tyle części wpisanego PESEL co całości, tak więc pattern był taki, że wyrażenie szukało jedynie tak: początek stringa, wpisany pesel, koniec stringa. Jak wpisałeś coś krótszego, np. 123, a w linii było 12345, to owszem początek-123 się zgadza, ale tu musiałby następować koniec stringa, a dalej było jeszcze 45 i dopiero koniec. Przydałoby się jeszcze wyświetlenie co znalazło:

  1. echo "Znalazlem dopasowanie <b>{$_POST['pesel']}</b> w linii <b>{$key}</b> do PESEL: <b>{$value}</b></br/>";
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.