Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z pętlami
Forum PHP.pl > Forum > Przedszkole
slimi750
Na wstępie witam użytkowników forum i mam nadzieję, że uzyskam tutaj trafne wskazówki dotyczące mojego problemu.
Stworzyłem krótki, prosty skrypt na pobieranie danych z bazy A i po spełnieniu warunku, na wypełnianie danych komórek w bazie B podaną wartością. O to mój 'amatorski' skrypt:

  1. //================================================================================
    =======//
  2.  
  3. //Połączenia z bazami
  4.  
  5. //================================================================================
    =======//
  6.  
  7. $query = mysql_query("SELECT * FROM kontav", $baza1);
  8.  
  9.  
  10. $query22 = mysql_query("SELECT * FROM kontav", $baza1);
  11. $rekords1 = mysql_fetch_assoc($query22);
  12.  
  13.  
  14.  
  15. $query2 = mysql_query("SELECT * FROM poladod", $baza2);
  16. $rekordf = mysql_fetch_assoc($query2);
  17.  
  18.  
  19.  
  20. $query3 = mysql_query("SELECT * FROM poladod WHERE `fid` = BINARY '". $rekords1['nick'] ."'", $baza2);
  21. $rekordsid = mysql_fetch_assoc($query3); //Pobieranie unikalnego id usera
  22.  
  23.  
  24. while ($rekords = mysql_fetch_assoc($query))
  25. {
  26. if ($rekords['nick'] == $rekordf['fid']) //Sprawdzanie czy user istnieje w bazie1(tabela kontav -> kolumna nick) oraz w bazie2 (tabela poladod -> kolumna fid)
  27. {
  28. $addvip = mysql_query("UPDATE users SET `grupa` = '11' WHERE `uid` = ". $rekordsid['ufid'] ."", $baza2);
  29. }
  30. }


Skrypt działa ale nie wstawia wartości przy kilku userach w bazie B, lecz tylko przy jednym. Na moje oko wina leży po stronie braku pętli lecz nie wiem co zrobić, gdy w skrypcie powinny być razem 3 pętle. Tak więc zwracam się do fachowców o pomoc.

ZaXaZ
coś pewnie z WHERE, wyprintuj wszystko po koleji co zwraca wartość.
slimi750
Spróbowałem z printowaniem w WHERE ale nie działa...
Dodałem tablice w zapytaniu, ale tym razem zwraca tylko wartość ostatniego usera w tabeli facepalmxd.gif

  1. $query22 = mysql_query("SELECT * FROM kontav", $baza1);
  2.  
  3. while ($rekords1 = mysql_fetch_array($query22))
  4. {
  5. $ids[] = $rekords1['nick'];
  6. }
  7.  
  8. foreach($ids as $v)
  9. echo $v; // Zwraca wszystkie wybrane rekordy.
  10.  
  11. $query3 = mysql_query("SELECT * FROM poladod WHERE `fid` = BINARY '$v'", $baza2);
  12.  
  13. while ($rekordsid = mysql_fetch_array($query3))
  14. {
  15. $ids2[] = $rekordsid['ufid'];
  16. }
  17.  
  18. foreach($ids2 as $v2)
  19. echo "<br /><br />".$v2; // Zwraca jeden rekord.
johny_s
a ile ma zwracać jeśli do $query3 idzie zapytanie z określonym id?
slimi750
Dobra, głupotę chyba palnąłem z tym where... Zasada działania ma być taka, że pobiera nazwy użytkowników z tabeli `kontav`, w $query3 sprawdza czy w kolumne `fid` istnieją pobrane nicki i jeśli istnieją to pobiera ich unikalne id.
Poprawiłem kod ale nadal zwraca id tylko jednego użytkownika.

  1. $query22 = mysql_query("SELECT * FROM kontav", $baza1);
  2.  
  3. while ($rekords1 = mysql_fetch_array($query22))
  4. {
  5. $ids[] = $rekords1['nick'];
  6. }
  7.  
  8. foreach($ids as $v)
  9. echo $v;
  10.  
  11. $query3 = mysql_query("SELECT * FROM poladod", $baza2);
  12.  
  13. while ($rekordsid = mysql_fetch_array($query3))
  14. {
  15. if ($rekordsid['fid'] == $v )
  16. {
  17. $ids2[] = $rekordsid['ufid'];
  18. }
  19. }
  20.  
  21. foreach($ids2 as $v2)
  22. echo "<br /><br />".$v2;
johny_s
a ten fid jest unikalny? bo $v ma tylko jedną wartość, ostatnią z tablicy $ids

jeśli chcesz sprawdzać wszystkie dane z tą tablicą $ids to lepiej z in_array(), albo zamienić te zapytania na jedno z jakimś joinem
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.