Har utseende för en meny jag har och vill göra så att för varje steg man klickar in på så hålls menyn öppen.
Har suttit och hållt på ett tag med detta men det jag gjort vill inte fungera. Alla huvudkategorier blir öppna och
jag kan öppna nivå 2 genom att klicka på nivå 1 och sen när jag klickar på nivå 3 stängs det ihop.
Vet ej hur jag ska lösa detta.
klassen current är att den är aktiv och klassen none visar att den ej har någon underkategori.
Kategoritabellen ser ut så här:
tbl_kategori
kategoriID
kategori
tkategoriID
Huvudkategorin Nivå 1 har tkategoriID 0 och kategoriID 1 medans Nivå 2 har i menyn ovans fall tkategoriID 1 och kategoriID 6 och Nivå 3 har tkategoriID 6 och kategoriID 9 och exempel 1 i Nivå 4 har tkategoriID 9 och kategoriID 14
Här är min kod:
<?php
$katID = "";
$rad = "";
$rad1 = "";
$rad2 = "";
$rad3 = "";
$rad4 = "";
$katID = fixSQL($_GET['cat']);
$sql1 = mysql_query("SELECT kategori,tkategoriID,kategoriID FROM tbl_kategorier Where kategoriID=$katID") or die(mysql_error());
$rad1 = mysql_fetch_array($sql1);
$sql2 = mysql_query("SELECT kategori,tkategoriID,kategoriID FROM tbl_kategorier Where kategoriID=".$rad1['tkategoriID']) or die(mysql_error());
$rad2 = mysql_fetch_array($sql2);
if (mysql_num_rows($sql2) != 0){
$sql3 = mysql_query("SELECT tkategoriID,kategoriID FROM tbl_kategorier Where kategoriID=".$rad2['tkategoriID']) or die(mysql_error());
$rad3 = mysql_fetch_array($sql3);
if (mysql_num_rows($sql3) != 0){
$sql4 = mysql_query("SELECT tkategoriID,kategoriID FROM tbl_kategorier Where kategoriID=".$rad3['tkategoriID']) or die(mysql_error());
$rad4 = mysql_fetch_array($sql4);
}
}
?>
<ul class="simple-nav">
<?php
// Nivå 1
$query = "SELECT kategoriID,kategori FROM tbl_kategorier Where tkategoriID=0 ORDER BY sort";
$result = mysql_query($query, $conn);
while ($RS=mysql_fetch_array($result)) {?>
<li><a href="itemsx.php?cat=<?php echo $RS['kategoriID'];?>"><?php echo $RS['kategori'];?></a> </li>
<?php
// Nivå 2
$antalUnder2 = mysql_num_rows(mysql_query("SELECT kategoriID FROM tbl_kategorier Where tkategoriID=".$RS['kategoriID']." ORDER BY kategori"));
if($antalUnder2 > 0){ // HÄR SKA NÅGOT IN.....
echo "<ul>";
$query2 = "SELECT kategoriID,kategori FROM tbl_kategorier Where tkategoriID=".$RS['kategoriID']." ORDER BY kategori";
$result2 = mysql_query($query2, $conn);
while ($RS2=mysql_fetch_array($result2)) {
$antalUnder3 = mysql_num_rows(mysql_query("SELECT kategoriID FROM tbl_kategorier Where tkategoriID=".$RS2['kategoriID']." ORDER BY kategori"));?>
<li><a href="itemsx.php?cat=<?php echo $RS2['kategoriID'];?>"<?php if($rad2['kategoriID'] == $RS2['kategoriID']){?> class="current"<?php }?><?php if($antalUnder3 == 0){?> class="none"<?php }?>><?php echo $RS2['kategori'];?></a></li>
<?php
// Nivå 3
if($antalUnder3 > 0 && $rad1['kategoriID'] == $RS2['kategoriID']){ // HÄR SKA NÅGOT IN.....
echo "<ul>";
$query3 = "SELECT kategoriID,kategori FROM tbl_kategorier Where tkategoriID=".$RS2['kategoriID']." ORDER BY kategori";
$result3 = mysql_query($query3, $conn);
while ($RS3=mysql_fetch_array($result3)) {
$antalUnder4 = mysql_num_rows(mysql_query("SELECT kategoriID FROM tbl_kategorier Where tkategoriID=".$RS3['kategoriID']." ORDER BY kategori"));?>
<li><a href="itemsx.php?cat=<?php echo $RS3['kategoriID'];?>"<?php if($rad1['kategoriID'] == $RS3['kategoriID']){?> class="current"<?php }?> class="none"><?php echo $RS3['kategori'];?></a></li>
<?php
// Nivå 4
if($antalUnder4 > 0 && $rad2['kategoriID'] == $RS3['kategoriID']){ // HÄR SKA NÅGOT IN.....
echo "<ul>";
$query4 = "SELECT kategoriID,kategori FROM tbl_kategorier Where tkategoriID=".$RS3['kategoriID']." ORDER BY kategori";
$result4 = mysql_query($query4, $conn);
while ($RS4=mysql_fetch_array($result4)) {?>
<li><a href="itemsx.php?cat=<?php echo $RS4['kategoriID'];?>"<?php if($rad1['kategoriID'] == $RS4['kategoriID']){?> class="current"<?php }?> class="none"><?php echo $RS4['kategori'];?></a></li>
<?php
}
echo "</ul>";
}
// Nivå 4 - slut
}
echo "</ul>";
}
// Nivå 3 - slut
}
echo "</ul>";
}
// Nivå 2 - slut
}
// Nivå 1 - slut
?>
</ul>
Tror det skulle vara enklare att sätta ett "Parent ID" istället för bara vilken nivå menyn ligger i. Du kan då fråga om denna menyn är parent till någon annan, och om den i sin tur är parent åt någon ytterligare nivå. Om det är sant visar du menyerna.
Om jag förstått det hela rätt också så skriver du endast ut menyer som ska visas? Ett förslag är då också att dölja menyer med hjälp av CSS istället för att inte skriva ut dem. Då kan du enkelt tilldela klasser på de som ska synas, och kraftigt reducera ditt antal mysql-anrop.
268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25