Gå til innhold

While løkke i while løkke


Anbefalte innlegg

Skrevet

Hei.

 

Er det på noen måte mulig å ha en while løkke inn i en while løkke slik som dette:

 

while () {

 

while () {

 

}

}

 

?

 

Takk for svar! :)

Videoannonse
Annonse
Skrevet

Jeg har nemlig en kode hvor det først kjøres en sql spørring i en while løkke, og deretter kjøres det en ny sql spørring i en ny sql spørring i samme while løkke.

 

slik:

 

while (SQL spørring 1) {

 

while (SQL spørring 2) {

 

}

 

}

 

Men dette går ikke, SQL spørring looper ikke, men repeterer seg bare en gang.

Hvor kan problemet ligge?

Skrevet

Fikk det til en gang ;) Gjorde det på denne måten:

while (SQL spørring 1) {

 

while (SQL spørring 2)

 

}

 

Tokk ikke med {} på den andre whilen, da funka det for meg..

Skrevet

Uten klammene vil kun første linjen kjøres, så det har fint lite med saken å gjøre.

At flere løkker dør ved bruk av SQL skyldes surring med variabelnavn eller overskrivinger av SQL-resultatsett. Noe koden nok og vil forklare.

Skrevet (endret)

Spørringene ligger forresten i en funksjon, dersom dette har noe å si.

 

Her er koden.

 

function hentAlbum($oppKoble, $a_tb, $am, $filnavn, $b_tb) {

$sql="SELECT * FROM ".$a_tb." ORDER BY id DESC";

$res=mysql_query($sql, $oppKoble);

while ($hent=mysql_fetch_array($res)) {

$albId=$hent['id'];
$albumTittel=$hent['albumTittel'];
$albumBilde=$hent['albumBilde'];
$beskrivelse=$hent['beskrivelse'];

echo "<h2>".$albumTittel."</h2>";


echo "<img src='".$am."/".$albumBilde."' alt='".$albumTittel."' />";
echo nl2br($beskrivelse);	

$sql2="SELECT min(id) FROM ".$b_tb." WHERE albumId='".$albId."'";

$res2=mysql_query($sql2, $oppKoble);
while ($hent2=mysql_fetch_array($res2)) {

$minAlbId=$hent2['filnavn_bilde'];
echo $sql2;
echo "MINID:".$minAlbId;

}
}

}

 

 

Problemet her er at $minAlbId kun blir skrevet ut ved siste repetesjon. Og da blir alle resultatene av $minAlbId skrevet ut etter hverandre.

 

For å skrive illustrere problemet, kan vi ta som et eksempel at while løkken kjører 3 repetisjoner, utfallet blir da:

 

$minAlbId: (tom)

$minAlbId: (tom)

$minAlbId: 123 (altså alle verdiene som skulle vært fordelt utover de 2 andre også.)

Se bort fra det som tidligere er skrevet. Koden over skriver ikke ut $minAlbId i det hele tatt. Hvordan kan dette fikses?

Noen som vet hvor problemet ligger? Takk for hjelp så langt! :)

 

 

 

edit:

Fant ut av, det. Glemt det!

Endret av Erik B.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...