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
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 *
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
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 *
aha super díky už rozumím, tohle mne nenapadlo.
ještě jednou děkuji za radu, a přeji hezký den,

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: