Jag skulle behöva en funktion som gör att jag kan ha en meny som man kan via en adminsida lägga till kategorier med underkategorier. Det ska kunna gå att ha oöndligt många understeg.
Någon som har en sådan färdig funktion eller har lust att hjälpa mig med detta?
kategorier:
kategoriID - int
kategori - varchar
tkategoriID - int
1 - Huvudmeny 1 - 0
2 - Undermeny under 1.1 - 1
3 - Undermeny under 1.2 - 1
4 - Undermeny under 1.3 - 1
5 - Undermeny under 3.1 - 3
6 - Undermeny under 3.2 - 3
7 - Undermeny under 6 - 6
8 - Undermeny under 3.3 - 3
9 - Undermeny under 3.4 - 3
10 - Huvudmeny 2 - 0
11 - Undermeny - 10
Hur det ser ut styr du lämpligen via CSS, genom att sätta olika CSS-klasser beroende på djup. Jag skulle nog byggt upp den där menyn via arv, men eftersom du säkert har en modernare PHP än jag kan jag inte visa kod för det.
Hittade några men de skriver unte ut med mellanslag så det ser bra ut.
Du kan inte använda mellanslag för att få bra resultat i HTML - HTML struntar nämligen blankt i hur många mellanslag du stoppar in. Det blir bara ett mellanslag i alla fall.
//I CSS - tex
.menu0{
padding:0px;
margin:0px;}
.menu1{
padding:2px;
margin:2px;}
.menu2{
padding:4px;
margin:4px;}
//.............
//I PHP
function menu($child_of){
if (!isset($child_of)){
$child_of = 0;
}
$SQL = "SELECT kategoriID, kategori, tkategoriID FROM kategorier WHERE tkategoriID = " . $child_of . "";
$result = mysql_query($SQL) or die(mysql_error());
while ($data = mysql_fetch_array($result)){
echo '<div class="menu'.$level.'">'.$data[1];
echo $level."</div><br>";
menu($data[0]);
}
}
Man måste ju lägga in stilmallen oxå i en forloop på nå vis för att slippa skriva det manuellt. Sen level är inget som skall finnas i den koden jag har elelr som du ändrat i.
Hur många "hundra" underkategorier skall du ha då? Enligt min erfarenhet så behövs sällan fler än 5 stycken men det är såklart beroende på vad man skall göra.
I annat fall kan du ju istället för att använda class skriva ut värdet direkt:
Pseudosyntax:
Jag vet inte hur många som behövs. SKa testa det du skrev nu.. Finns ju de som vill ha många underkategorier.. vem vet.. Jag hjälper ju andra med detta då och då men denna gången visste jag ej hur jag skulle göra.
Jag tycker mer att menyn ser ut som nästlade listor istället för en massa div-taggar, men du kanske har dina anledningar till att inte använda listor? :)
Annars, som listor (med reservation för att hjärnan går på halvfart tidiga måndagmorgnar och att jag inte kan testa PHP-funktionen):
function menu($child_of) {
if (!isset($child_of)) {
$child_of = 0;
}
if ($child_of === 0)
echo "<div id=\"menu\">\n";
$SQL = "SELECT kategoriID, kategori, tkategoriID FROM kategorier WHERE tkategoriID = " . $child_of . "";
$result = mysql_query($SQL) or die(mysql_error());
$nItems = 0;
while ($data = mysql_fetch_array($result)) {
if ($nItems === 0)
echo "<ul>\n";
echo "<li>" . $data[1];
menu($data[0]);
echo "</li>\n"
$nItems++;
}
if ($nItems > 0)
echo "</ul>\n";
if ($child_of === 0)
echo "</div>\n";
}
echo menu(0);
och
#menu ul,
#menu li {
list-style: none;
margin: 0;
padding: 0;
}
#menu ul li {
padding-left: 20px;
}