eli olen tehny db luokan ja sinne query function. välitän mysql lauseen funktiolle ja osoitteen arrayhin mihin tallentaa sitten tulos. Teen sellaisen queryn että sieltä löytyy useampi rivi mutta saan foreachilla tulostettua vain ekan rivin tiedot....misä mättää???
lause jota käytän:
foreach($table as $name=>$value) { echo "$name = $value<br>"; }
Hmm... Anna mielummin sitä query-funktion koodia ja miten sitä käytät. Ei tuossa foreach-lauseessa ole mitään vikaa.
Tässä olisi tämä:
public function Query($aQuery, &$aTable, $aLog=false) { // Performing SQL query $sql = mysql_query($aQuery) or die ($this->Log(mysql_error())); // Checks if there's a wrong query if(!$sql){ $this->Log($sql); } // Checks if there's any rows in the result if(0 == mysql_num_rows($sql)) { // If there's no rows, sets the array to 0 $aTable = 0; } else { // Gets the results to table $aTable = mysql_fetch_assoc($sql); } // Free resultset mysql_free_result($sql); }
Kun teen haun josta tuloksena pitäisi tulla kolme riviä 2 soluisesta taulusta. eli Maa taulussa on id ja nimi ja siellä on 3 maata(fin,swe,nor) mutta tulostaa ainoastaa vain fin tiedot
Kyllä tuokin näyttäisi olevan kunnossa. Katso varmuuden vuoksi mitä se viitteenä funktiolle antamasi taulukko pitää sisällään print_r()-funktiolla. Jotenkin kuitenkin sellainen kutina, että sieltä kannasta ei tosiaan tule kuin yksi rivi.
Juu oikeassa olet, mutta ihmetyttää vain että tietokannassa on se 3 riviä ja käytän vielä lausetta SELECT * FROM maat
Lemtz81 kirjoitti:
Tässä olisi tämä:
else { // Gets the results to table $aTable = mysql_fetch_assoc($sql); } // Free resultset mysql_free_result($sql); }
Eikös tuo mysql_fetch_assoc hae vain yhden rivin ellei sitä pyöritä jossain luupissa?
jeps, sen korjasin....
laitoin seuraavan lauseen:
while($row = mysql_fetch_assoc($sql)) { $aTable .= $row; }
Mutta homma pissii vieläki, en saa tulostettua koko roskaa
Mitenkäs tulostelet sitä? Ja tuo funktio ei tällä hetkellä palauta, eikä tulosta mitään (jos se on edelleen samanlainen kuin tuo ylhäällä pastetettu)
raezel kirjoitti:
Eikös tuo mysql_fetch_assoc hae vain yhden rivin ellei sitä pyöritä jossain luupissa?
Äh, niin tietenkin.
while($row = mysql_fetch_assoc($sql)) { $aTable[] = $row; }
Mutta en sitten tiedä kuinka järkevää tuo on. Tuolla menetelmällä joudut väkisinkin looppaamaan tulokset kahteen kertaan...
jeps
hokasin myös tällaisen
Mutta kiitoksia kuiteski
Aihe on jo aika vanha, joten et voi enää vastata siihen.