ugrás a tartalomhoz

Egymásba ágyazott ciklusok

supi007 · 2009. Jún. 27. (Szo), 16.10
Hello,

Írtam egy for ciklust, amiben le kellene futnia egy while ciklusnak, de nem fut le.
Nem tudom mi lehet a baj?!

function jatekosMegnevezes($param1){
  include("connect.php");
  $result = mysql_query("SELECT name FROM dp_oldboys",$sql_connect) or die (mysql_error());
  for($i=0;$i<$param1;$i++) {
   print $i;
   while($array = mysql_fetch_array($result)){
    print $array['name'];}
  }
}
Kérnék egy kis segítséget, ha lehet.

supesz
 
1

Üres result set?

tisch.david · 2009. Jún. 28. (V), 00.06
Hi!

Nem lehet, hogy a lekérdezés nem ad vissza eredményt? Így elsőre ez elég sanszosnak tűnik. Futtasd le pl. phpMyAdmin-ban is!

Üdv:
Dávid
2

Szerintem is

Ustak · 2009. Jún. 28. (V), 08.34
Próbáld ki pl. egy:

$k=0;
while ($array=mysql_fetch_array($result) || $k<5) {
    echo "Csak lefut ez no ".$k."<br />";
    if (isset($array['name'])) {
        echo $array['name'];
    } else {
        echo "de itt nincs eredménye a resultnak.".$k;
   }
   $k++;
}
Nem próbáltam ki, de szerintem le kellene hogy fusson, vagy valahogy hasonló szisztémával :-)
Üdv:
Gábor
3

Van neki eredménye

supi007 · 2009. Jún. 28. (V), 13.25
Hi,

Van eredménye a lekérdezésnek.
Az a probléma, hogy a for ciklusba ágyazott while ciklus csak egyszer fut le. Pedig többször kellene neki. $param1-szer!

supesz
4

Na ne már!

Nagy Gusztáv · 2009. Jún. 28. (V), 13.39
Hogy futna le többször? Hiszen az első ($i=0) while alkalmával már bejártad a teljes $result-ot. Ha a while leáll, akkor elfogytak a sorok, nem? Hiába próbálod még egyszer ugyanezt a while ciklust, így nincs mit visszaadni!

Én egész máshogy szervezném ezt az algoritmust:

1. ciklus: a nevek egy tömbbe gyűjtése
2. ciklus: annyiszor mész végig rajta és írod ki, ahányszor akarod
5

Ez tré

supi007 · 2009. Jún. 29. (H), 21.13
Amit én tudtam az hogy while-t kell használnom, ha egy tömböt fel akarok tölteni.
while($array = mysql_fetch_array($result))
Na már most én $i-szer akarom feltölteni a tömböt. Miért ne lehetne?
Egyébként azt akartam megcsinálni, hogy egy select elem optionjeit akartam feltölteni, de úgy, hogy egymás alatt szerpeljen ugyanaz a legördülő menü (lista).

<select>
while($array = mysql_fetch_array($result))
     print "<option>".$array['tombelem']."</option>";
</select> 
Ezt kellene $i -szer megcsinálnia.

supesz
6

a $array már az első futásnál feltöltődik

Walkman_ · 2009. Jún. 29. (H), 22.00
A $array már az első futásra feltöltődik az eredményhalmaz helyes értékeivel, ha még1x meghívod, üres eredményhalmazon hajtódik végre a mysql_fetch_array(), így jóhogy hibát dob, ahogy Gusztáv is elmondta.

Ha többször fel akarod használni a $array tömböt, azt valahogy így teheted meg:

 $result = mysql_query("SELECT name FROM dp_oldboys",$sql_connect) or die (mysql_error());
 
 // egy tömb létrehozása a lekérdezés eredményhalmazából
 while($array = mysql_fetch_array($result)){  
     $nevek[] = $array['name'];}  
 }
 
 // $param1 számú lista beszúrása ugyanazokkal az értékekkel
 for ( $i = 0; $i< $param1; $i++ ) {
    print "<select>";
    foreach ( $nevek as $nev ){  
       print "<option>" . $nev . "</option>";  
    print "</select>";
 }

7

Thx!

supi007 · 2009. Jún. 29. (H), 22.04
Köszönöm a válaszodat. Igen. Erre gondoltam, és már értem mit csináltam rosszul.

supesz