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?!
  1. function jatekosMegnevezes($param1){  
  2.   include("connect.php");  
  3.   $result = mysql_query("SELECT name FROM dp_oldboys",$sql_connector die (mysql_error());  
  4.   for($i=0;$i<$param1;$i++) {  
  5.    print $i;  
  6.    while($array = mysql_fetch_array($result)){  
  7.     print $array['name'];}  
  8.   }  
  9. }  
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:
  1. $k=0;  
  2. while ($array=mysql_fetch_array($result) || $k<5) {  
  3.     echo "Csak lefut ez no ".$k."<br />";  
  4.     if (isset($array['name'])) {  
  5.         echo $array['name'];  
  6.     } else {  
  7.         echo "de itt nincs eredménye a resultnak.".$k;  
  8.    }  
  9.    $k++;  
  10. }  
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.
  1. 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).
  1. <select>  
  2. while($array = mysql_fetch_array($result))  
  3.      print "<option>".$array['tombelem']."</option>";  
  4. </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:
  1. $result = mysql_query("SELECT name FROM dp_oldboys",$sql_connector die (mysql_error());  
  2.   
  3. // egy tömb létrehozása a lekérdezés eredményhalmazából  
  4. while($array = mysql_fetch_array($result)){    
  5.     $nevek[] = $array['name'];}    
  6. }  
  7.   
  8. // $param1 számú lista beszúrása ugyanazokkal az értékekkel  
  9. for ( $i = 0; $i$param1$i++ ) {  
  10.    print "<select>";  
  11.    foreach ( $nevek as $nev ){    
  12.       print "<option>" . $nev . "</option>";    
  13.    print "</select>";  
  14. }  
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