Autor | Zpráva | ||
---|---|---|---|
Palma Profil * |
Dobrý den, mám problém s MySQL, nevrací mi správný počet výsledků hledání.
kod: <?php include("config.php"); $query = "SELECT * FROM skupiny"; $result = mysql_query($query,$spojeni) or die ("nepovedlo se vzhodnotit SQL dotaz 1"); while($row=mysql_fetch_array($result)) { $skup_id = $row["ID"]; echo $skup_id; $query4 = "SELECT prac FROM pracujici where skup='$skup_id'"; $result4 = mysql_query($query4,$spojeni) or die ("nepovedlo se vzhodnotit SQL dotaz 1"); $row4=mysql_fetch_array($result4); while($row4=mysql_fetch_array($result4)) { $prac = $row4["prac"]; echo $prac; echo "test<br>"; $query3 = "SELECT name FROM lide where ID='$prac'"; $result3 = mysql_query($query3,$spojeni) or die ("nepovedlo se vzhodnotit SQL dotaz 1"); $row3=mysql_fetch_array($result3); while($row3=mysql_fetch_array($result3)) { $name= $row3["name"]; echo "$name <br><br>"; } } echo "<br><br><br></td> </tr>"; } echo "</table>"; ?> zvýrazněná část vrací vždy o jeden záznam v databázi méně než kolik jich je. výsledná php stránka pak má místo třeba 4 lidí ve skupině jen 3. vypadá to jako vy cyklus while vždy bral o jeden řádek méně. Může mi prosím někdo poradit kde je chyba? předem děkuji za odpověď. Moderátor nightfish: Kód prosím uzavírej mezi [pre ] a [ /pre] (tlačítko s <>).
|
||
nightfish Profil |
#2 · Zasláno: 11. 11. 2009, 12:01:03 · Upravil/a: nightfish
může za to řádek 22, který pokonzumuje první řádek výsledku
nicméně celý tento skript by se dal zřejmě nahradit jedním elegantním dotazem EDIT: dotaz by mohl vypadat zhruba takto: SELECT s.id, p.prac, l.name FROM skupiny s JOIN pracujici p ON s.id = p.skup JOIN lide l ON p.prac = l.ID |
||
Palma Profil * |
#3 · Zasláno: 11. 11. 2009, 13:33:54
děkuji za odpověď a návrh řešení, jdu to vyzkoušet.
Nicméně řádek 22 je prakticky vzato v pořádku, řádek 19 mi to hlídá, slovo test se taky vypíše o jeden cyklus méněkrát. |
||
nightfish Profil |
#4 · Zasláno: 11. 11. 2009, 13:37:50
Palma:
„Nicméně řádek 22 je prakticky vzato v pořádku, řádek 19 mi to hlídá, slovo test se taky vypíše o jeden cyklus méněkrát.“ řádky 13 a 22 jsou tam navíc... konkrétně tedy „$row4=mysql_fetch_array($result4);“ „$row3=mysql_fetch_array($result3);“ protože obsah proměnných $row4 a $row3 je hned na následujících řádcích přesán cyklem while() - v obou dvou případech to tedy ignoruje první řádek výsledku |
||
Palma Profil * |
#5 · Zasláno: 11. 11. 2009, 13:52:00
aha super díky už rozumím, tohle mne nenapadlo.
ještě jednou děkuji za radu, a přeji hezký den, |
||
Časová prodleva: 14 let
|
0