![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 22.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Szukam od 2 dni odpowiedzi i nie potrafię rozwiązać następującego problemu.
Poniższy kod jak widać odczytuje zawartość tabel. Problem polega na tym, że błędnie wyświetlana jest druga kolumna wiersza (zaznaczona przez pogrubienie, funkcja printf()). Na początku myślałem, że źle zapisano zapytanie mysql ale następne dwa $wynik3 i $wynik4 są zbudowanie na tej samej zasadzie a wyniki wyświetlają się prawidłowo. Błąd polega na tym, że nazwy firm generowane się w niezrozumiały dla mnie sposób. Tabela user u id | nazwa 1 | aaa 2 | bbb 3 | ccc Tabela harmonogram h nr zlecenia | idcompany | produkt | etap 1 | 1 | 3 |1 2 | 2 | 1 |3 3 | 1 | 5 |8 4 | 3 | 4 |3 5 | 3 | 7 |6 Wynik jest taki 1 | bbb | projdukt3 | etap1 2 | aaa | projdukt1 | etap3 3 | aaa | projdukt5 | etap8 4 | ccc | projdukt4 | etap3 5 | ccc | projdukt7 | etap6 Oczywiście jest jeszcze tabela produkt i etap zbudowane tak jak user. Nie rozumie skąd taka kolejność ? Dlaczego jest to niezgodne z zapytaniem, w którym wskazuje, że h.idcompany = u.id. Jeszcze raz powtórzę dane z kolumny produkt i etap są generowane na tej samej zasadzie i wszystko jest ok. Nie mogę rozgryźć jak/na jakiej podstawie generowana jest kolejność w tablicy asocjacyjnej dla zmiennej $firma $wynik = mysql_query("select * from harmonogram"); $wynik2 = mysql_query("select company from harmonogram h, users u where h.idcompany = u.id"); $wynik3 = mysql_query("select produkt from produkt p, harmonogram h where p.id_produkt = h.product"); $wynik4 = mysql_query("select nazwa from etap e, harmonogram h where e.id_etap = h.etap"); $rec = mysql_num_rows($wynik); for ($i=0; $i <$rec; $i++) { $wiersz = mysql_fetch_array($wynik); $firma = mysql_fetch_array($wynik2); $produkt = mysql_fetch_array($wynik3); $etap = mysql_fetch_array($wynik4); printf(' <tr valign="top" align="left").'"> <td> <font class="small_font2">'.$wiersz["nr_zlecenia"].'</font></td> <td> <font class="small_font2">'.$firma["company"].'</font></td> <td> <font class="small_font2">'.$produkt["produkt"].'</font></td> <td> <font class="small_font2">'.$etap["nazwa"].'</font></td> </tr> '); |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
po pierwsze: uzywaj BBCODE
po drugie: to ze w tabeli widzisz dane w pewnej kolejności to nie znaczy ze pobrane z bazy też będą miały taką kolejność. Do określenia kolejności słuzy ORDER BY po trzecie: 4 zapytania by to wyswietlic? Słyszałeś o łączeniu tabel (LEFT JOIN)? To powinienes zrobic jednym zapytaniem. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 09:23 |