Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]2 tablice w petli
Forum PHP.pl > Forum > Przedszkole
Oczko21
Chcialbym polaczyc dwie tablice w petli, ale jakos mi to nie wychodzi

  1. $tablica1=" zapytanie do bazy ";
  2. $tablica1=mysql_query($tablica1);
  3. $tablica1=mysql_fetch_array($tablica1);
  4.  
  5. $tablica2=" drugie zapytanie do bazy ";
  6. $tablica2=mysql_query($tablica2);
  7. while($tablica2=mysql_fetch_array($tablica2))
  8. {
  9. if($tablica2['kto'] == $tablica1['odp']){
  10. [i]INSTRUKCJA[/i]
  11. }else{
  12. [i]INSTRUKCJA2[/i]
  13. }
  14. }

Nie wywala zadnego bledu, tylko nie wiedzac czemu caly czas przyrownuje wszystkie rekordy z tablica2 do pierwszego rekordu z tablica1. Probowałem rowniez wstawic wszystkie zapytania tablica1 wewnatrz petli ale efekt byl ten sam
Kshyhoo
Napisz, jakie dane chcesz wyciągnąć... Powiązania? Generalnie, jeżeli chcesz wyszukiwać z dwóch tabel, to np.:
  1. $osoby = mysql_query("SELECT * FROM osoby;");
  2.  
  3. for ($i=0;$i<mysql_num_rows($osoby);$i++) {
  4. $osoba = mysql_fetch_array($osoby);
  5. echo $osoba["nazwisko"].": ";
  6. $nazwiska = mysql_query("SELECT * FROM nazwiska WHERE osobaid={$osoba["id"]}");
  7. for ($j=0;$j<mysql_num_rows($nazwiska);$j++) {
  8. $nazwisko = mysql_fetch_array($nazwiska);
  9. echo $nazwisko["nazwisko"];
  10. if ($j<mysql_num_rows($nazwiska)-1) echo ", ";
  11. }
  12. echo "<br>";
  13. }
Oczko21
chcialbym aby w srodku petli dane z obu tablic byly porownywane i jesli sa takie same to zeby robila sie instrukcja1 a jesli inne to instrukcja2
Kshyhoo
No to w czym problem? Jeżeli coś jest == czemuś, to to, a jak coś jest !=, to coś innego... ;p
Oczko21
Tak, ale problem w tym ze porownuje mi cala tablice1 z tylko pierwszym rekordem tablicy2, dodam ze w drugiej tablicy znajduje sie wiecej rekordow niz 1
Kshyhoo
Masz tu przykład, jak porównuje się tablice:
  1. // $a = array(1,1,0,2,2,7);
  2. // $b = array(2,1,0,9);
  3.  
  4. $a = explode(" ","Jakieś zdanie do porównania");
  5. $b = explode(" ","Jakieś zdania do porównania");
  6.  
  7. $ile = (count($a)>=count($b))?count($a):count($b);
  8.  
  9. for($i=0;$i<$ile;$i++) {
  10. if ($a[$i]==$b[$i]) {
  11. $zgodne++;
  12. echo "$a[$i] - $b[$i]<br />";
  13. } else {
  14. $niezgodne++;
  15. echo "<b>$a[$i] - $b[$i]</b><br />";
  16. }
  17. }
  18.  
  19. echo "zgodne: $zgodne - niezgodne: $niezgodne";

Oczko21
Zrobilem analogicznie jak w przykladzie ktory podales i dalej nie wiedzac czemu porownuje tylko pierwsze rekordy z obu tabel

  1. $tab1=" ... ";
  2. $tab1=mysql_query($tab1);
  3. $tab1=mysql_fetch_array($tab1);
  4.  
  5.  
  6. $tab2=" ... ";
  7. $tab2=mysql_query($tab2);
  8. $ile=mysql_num_rows($tab2);
  9. $tab2=mysql_fetch_array($tab2);
  10. for($i=0;$i<$ile;$i++) {
  11. if ($tab2['x']==$tab1['xx']) {
  12. echo ''.$wynik['x'].' - '.$qq2['xx'].'<br />';
  13. } else {
  14. echo '<b>'.$tab2['x'].' - '.$tab1['xx'].'</b><br />';
  15. }
  16. }
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.