Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][MySQL]porównie $string z mysql do $string z pliku csv
Forum PHP.pl > Forum > Przedszkole
Gularz_pl
Witam ponownie smile.gif

Potrzebyję pomocy z poniższym fragmentem kodu.
Mam bazę mysql i w niej "numer_klienta", potrzebuję porównać czy pobrany numer istnieje w pliku csv i odpowiedznie spreparowanie odpowiedzi.
W chcwili obecnej wyszukuje mi tylko ostatni numer pobrany z bazy/
Format pliku csv:
|12|
|123|
itd.

Z góry thx. biggrin.gif

  1. $plik = fopen ("baza.csv","r");
  2. $ins=mysql_query("select * from klient");
  3. while($row=mysql_fetch_array($ins)){
  4. $numer_z_bazy=$row['numer_klienta'];
  5.  
  6. while (($data = fgetcsv($plik_pyxis, 1000, "|")) !==FALSE){
  7. $numer_klienta=explode("|",$data[1]);
  8. $numer_k=$numer_klienta[0];
  9.  
  10. if ($numer_z_bazy==$numer_k)
  11. {
  12. echo "Znaleziono klienta nr. " . $numer_k."</br>";
  13. break;
  14. }
  15. else
  16. {
  17. echo "Nie znaleziono</br>";
  18. }
  19. }
  20. }
  21.  


wookieb
Raz pobierz zawartosc pliku http://php.net/file_get_contents
i czy podane słowo istnieje w pliku to sprawdzisz za pomoca http://php.net/strpos
Gularz_pl
Cytat(wookieb @ 15.08.2009, 22:35:09 ) *
Raz pobierz zawartosc pliku http://php.net/file_get_contents
i czy podane słowo istnieje w pliku to sprawdzisz za pomoca http://php.net/strpos


Zrobiłem tak:

  1. $ins=mysql_query("select * from klient");
  2. while($row=mysql_fetch_array($ins))
  3. {
  4. $numer_z_bazy=$row['numer_klienta'];
  5.  
  6. $dane = file("baza.csv");
  7. for($i=0; $i<count($dane); $i++) {
  8. $dane[$i] = explode("|", $dane[$i]);
  9. if (strpos($dane[$i][1],$numer_z_bazy)!==False)
  10. {
  11. echo "Znaleziono ".$numer_z_bazy."</br>";
  12. break;
  13. }
  14. }
  15. }
  16. mysql_close($connection);


ale jak wylistować $numer_z_bazy w wypadku kiedy numer nie figuruje w pliku questionmark.gif? else na if(strpos nie załatwia sprawy

wookieb
Cytat(wookieb @ 15.08.2009, 22:35:09 ) *
Raz pobierz zawartosc pliku http://php.net/file_get_contents

i na nim sprawdzaj czy uzytkownik jest. Jezeli nie ma to else i po sprawie. Po cholere pobierasz w petli za kazdym razem zawartosc pliku?questionmark.gif
Gularz_pl
ok a wiec tak smile.gif
ale nadal cos jest nie tak.
w bazie mam wpis numer_klienta |200| w pliku nie ma wszystko ok pisze ze nie ma, ale po dodaniu klienta w pliku dalej skrypt twierdzi ze nie ma questionmark.gif?
oczyświcie odświeżałem przegladarkęe ,kasowałem cache i to samo questionmark.gif? jakiś pomysł questionmark.gif


  1. $ins=mysql_query("select * from klient");
  2. $plik = file_get_contents("baza.csv");
  3.  
  4. while($row=mysql_fetch_array($ins))
  5. {
  6. $numer_z_bazy=$row['numer_klienta'];
  7. if (strpos($plik,$numer_z_bazy))
  8. {
  9. echo "jest ".$numer_z_bazy. "</br>";
  10. }
  11. else
  12. {
  13. echo "nie ma ".$numer_z_bazy."</br>";
  14. }
  15. }
  16. mysql_close($connection);
wookieb
No a skoro usunales z pliku numer klienta i w pliku sprawdzasz czy istnieje a skoro mowi ci ze nie ma w pliku tzn ze nie ma w pliku. Odpowiedź wywnioskuj.
Gularz_pl
Cytat(wookieb @ 16.08.2009, 00:36:20 ) *
No a skoro usunales z pliku numer klienta i w pliku sprawdzasz czy istnieje a skoro mowi ci ze nie ma w pliku tzn ze nie ma w pliku. Odpowiedź wywnioskuj.


nie zrozumiałeś:
w bazie mysql numer_klienta istnieje a w pliku nie ; ok skrypt twierdzi ze nie ma bo tak jest
dodaję klienta w pliku i uruchamiam skrypt więc istnieje i w bazie i pliku ; skrypt dalej twierdzi ze nie ma klienta w pliku.
Narazie zauwazyłem taką zależność z liczbą 200

no i pytanie co jak w pliku bedzie powiedzmy 2 klientów z nr.200 ;przypadkowo questionmark.gif
wookieb
Dodałeś ten numer na początku pliku?
http://pl2.php.net/strpos -> ostrzeżenie
Gularz_pl
ok ostatecznie, prawie smile.gif zgodnie z manualem smile.gif porównywanie danych z mysql z plikiem csv.
Niestety skrypt mnie nie satysfakcjonuje ;/ ponieważ tak jak pisałem wcześniej
plik bedzie zawierał inne dane np.
|1|Kowalski|Jan|2|
|2|Kowalska|Iwona|234|

i w takim wypadku wszystko bedzie ok ale po usunięciu z pliku p.Iwony skrypt będzie dalej twierdził ze pani istnieje w pliku chodzi o numerek |2|.

Więc niestety pozostaje wczytanie pliku do tablicy jak w wcześniejszym [przykładzie i dopiero wyszukiwanie w konkretnej komórce, chyba ze jest obejście problemu ?

  1. $ins=mysql_query("select * from klient");
  2. $plik = file_get_contents(baza.csv);
  3.  
  4. while($row=mysql_fetch_array($ins))
  5. {
  6. $numer_z_bazy=$row['numer_klienta'];
  7. $pos=strpos($plik,$numer_z_bazy);
  8. if ($pos === false)
  9. {
  10. echo "Nie ma ".$numer_z_bazy."</br>" ;
  11. }
  12. else
  13. {
  14. echo "Jest ".$numer_z_bazy."</br>";
  15. }
  16. }


wookieb
Ech nic nie myslisz. Jak ci ktoś każe wyszukac w ciagu tekstowy cyfry 2 to co bedziesz szukal? Znaku oznaczajacego cyfre 2. A jezeli usunimesz piękną iwonkę to czy w pliku są inne znaki z cyferką 2? oczywiście że tak.

  1. $pos=[url="http://www.php.net/strpos"]strpos[/url]($plik,'|'.$numer_z_bazy.'|');

Gularz_pl
Cytat(wookieb @ 16.08.2009, 11:43:19 ) *
Ech nic nie myslisz. Jak ci ktoś każe wyszukac w ciagu tekstowy cyfry 2 to co bedziesz szukal? Znaku oznaczajacego cyfre 2. A jezeli usunimesz piękną iwonkę to czy w pliku są inne znaki z cyferką 2? oczywiście że tak.


no teraz to juz zbaraniałem smile.gif mozna coś bliżej ? problem pewnie lezy w tym ze struktura pliku dokładnie wyglada tak:
2009-08-03 22:19:57|200|martyna|884254|Kowalski Jan|||118|||
2009-08-03 22:19:57|383|broniewskiego22|1740243|Kowalska Iwona|||200|||

podbiję wyżej smile.gif

zna ktoś rozwiązanie problemu ?
wookieb
No i po co podbijasz?

Jak nie umiesz zrobic strpos to nauka php i logiki cie czeka.
Zrob skrypt ktory w petli stworzy ci tablice idków osób. http://php.net/explode , http://php.net/file

I potem http://php.net/in_array sprawdzisz czy klient istnieje.
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.