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>
');