Avatar billede kaktus Nybegynder
28. februar 2010 - 11:01 Der er 5 kommentarer og
1 løsning

2 level dynamic navigation list menu

Hejsa.....
Jeg har en list menu ud fra nedenstående php kode og eksisterende db.

eksempel kan ses her
http://ekspert.sluk.dk

min kode ser sådan ud min der er fejl i........ ul og li tag ikke sat rigtigt!!!!!!
kode skal være xhtml valid)

Hvor går det galt i koden?

<?
if($_SESSION["auth"] == 1){
$result = mysql_query("SELECT * FROM d_menu_left WHERE parentId = 0  ORDER by sortkey");
}else{
$result = mysql_query("SELECT * FROM d_menu_left WHERE parentId = 0  AND publish = 'YES'  ORDER by sortkey");
}
echo "<ul>\n";//yderste ul
while($data = mysql_fetch_array($result)){ //yderste while
echo "    <li> <a href='$_SERVER[PHP_SELF]?id=$data[id]'>$data[category_name](id=$data[id]-parentId=$data[parentId])</a>\n";

echo "<ul  id=\"unikid-$data[id]\"> \n";

if($_SESSION["auth"] == 1){
$result2 = mysql_query("SELECT * FROM d_menu_left WHERE $data[id] = parentId ORDER by sortkey");
}else{
$result2 = mysql_query("SELECT * FROM d_menu_left WHERE $data[id] = parentId  AND publish = 'YES' ORDER by sortkey");
}

while($data2 = mysql_fetch_array($result2)){ //while no1
if($_SESSION["auth"] == 1){
$sqlresult = mysql_query("SELECT * FROM d_menu_left WHERE $data2[id] = parentId  ORDER by sortkey");
}else{
$sqlresult = mysql_query("SELECT * FROM d_menu_left WHERE $data2[id] = parentId  AND publish = 'YES' ORDER by sortkey");
}

echo "<li><a href='$_SERVER[PHP_SELF]?id=$data2[id]'>$data2[category_name](id=$data2[id]-parentId=$data2[parentId])</a>\n";

echo "</li>\n";

} //while no1
echo "</ul>\n";
}//yderste while

echo "\n</ul>\n\n";//yderste ul
?>
Avatar billede showsource Seniormester
28. februar 2010 - 13:37 #1
Du kan jo prøve at ta' det fra bunden af:

<ul>

phpscript linie for linie her.


</ul>

Og prøv at kikke her:

http://www.eksperten.dk/guide/55
Avatar billede kaktus Nybegynder
28. februar 2010 - 15:51 #2
Så er det prøvet fra bunden af, men er ikke meget klogere af det....

Forøvrigt en god artikel du linker til som jeg klart kan anbefale
Avatar billede kaktus Nybegynder
28. februar 2010 - 19:33 #3
Problemet er tilsyneladende at menupunkter uden submenupunkter sætter en <ul></ul> omkring.
Altså disse, som ingen "Subitems" har
Item two
Item three)
Item four

En løsning kunne være at lave om så kun menupunkter med submenupunkter vises, MEN det må dog kunne lade sig gørre med nuværende script????
Avatar billede showsource Seniormester
01. marts 2010 - 04:52 #4
Det jeg "fedter" for, er at du får det sat op, så du kan lave en query, og derefter lave dit output.

Det andet med en/flere query inde i en while, og query som iøvrigt stort set er ens, er ikke særlig godt.
Avatar billede kaktus Nybegynder
01. marts 2010 - 17:16 #5
Ved at kikke på hvad andre har gjort eks. her (som er testet og virker fint)
http://www.daniweb.com/forums/thread38643.html

tror jeg ikke man kan undgå en enkelt query inde i while lykke....
og selvfølglelig en udenfor inden første gennemløb.
At jeg bruger hele 4 stk skyldes et query der viser alle poster (når admin er logget ind) elles et andet hvor kun dem der er publiseret (publish=yes) vises for alle uden login.

Jeg har faktisk testet hele tre måder at gøre det samme på og alle sætter en (ikke xhtml valid) <ul></ul> uden om menupunkter hvor der ikke findes underpunkter........

MEN stadig hvis en ekspert kan fortælle en anden god måde at gøre det på er det velkommen.. :-)
Avatar billede kaktus Nybegynder
03. marts 2010 - 08:59 #6
Ja så fandt jeg selv på en acceptabel løsning på problemet

Man sætter en tæller uden for det hele øverst
$ul = 0;


denne tæller tæller op lige inden ydre while løkke slutter
$ul++;
}//outer while


I inner while løkke uden mo submenupunkt sættes
if($ul!=0)echo "<ul>";
//her kommer submenu punkt
if($ul!=0)echo "<\ul>";

På denne måde forhinderes at der sættes tomme <ul></ul> efter hovedmenupunkter...... og koden er dermed xhtml valid og står som den skal
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester