Eli koodi olisi jotakuinkin tällainen
while($row2 = mysql_fetch_array($kysely2)){
$kakkosnimi = $row2['name'];
$kakkoslinkki = $row2['link'];
print "".$kakkosnimi."";
if($kakkoslinkki == $sivu){
print "".$kakkosnimi."";
if(!$kysely2 = mysql_query("SELECT * FROM raja WHERE parent = '$sivu' ORDER BY `jarjestys`"))
{
print "";
}else{
print "";
while($row2 = mysql_fetch_array($kyselyalavalikko2)){
$kakkosnimil = $row2['name'];
$kakkoslinkkil = $row2['link'];
print "".$kakkosnimil."";
}
}
}
Miten saan koodin jatkamaan linkkien tulostamista siitä, mihin jäätiin if-lauseessa?
while($row2 = mysql_fetch_array($kysely2)){
$kakkosnimi = $row2['name'];
$kakkoslinkki = $row2['link'];
print "".$kakkosnimi."";
if($kakkoslinkki == $sivu){
print "".$kakkosnimi."";
if(!$kysely2 = mysql_query("SELECT * FROM raja WHERE parent = '$sivu' ORDER BY `jarjestys`"))
{
print "";
}else{
print "";
while($row2 = mysql_fetch_array($kyselyalavalikko2)){
$kakkosnimil = $row2['name'];
$kakkoslinkkil = $row2['link'];
print "".$kakkosnimil."";
}
}
}
Miten saan koodin jatkamaan linkkien tulostamista siitä, mihin jäätiin if-lauseessa?
Vastaukset 2
Vanhimmat
Eli käytännössä haut keskeytyvät, kun ensimmäinen if -lause esiintyy.
Haluaisin siis linkkien esiintyvän näin:
suljettuna
link
link
avattuna
link
-alilink
-alilink
link
Nyt avatut linkit näkyvät näin:
link
-link
-link
eli käytännössä ylemmän tason linkit jäävät tulostumatta, mikäli if lause on välissä.
Hirveää härdelliä tarkemmin lukematta, veikkaisin että syyllinen löytyy siitä, että käytät sisemmälle ja ulommalle loopille samoja muuttujanimiä.
Huomautan kuitenkin, että tuolla tavalla saat vain kaksitasoisen puurakenteen. Kolmas taso vaatisi uuden sisäkkäisen loopin iffin sisään, jne...
Parempi vaihtoehto voisi olla käyttää vaikka rekursiivista funktiokutsua (eli funktiota, joka kutsuu itseään). Tason syvyys ja isätason avain parametrina... Tulisi varmaan vähän selkeämpi ja yksinkertaisempi ratkaisu.