Avatar billede htm Nybegynder
27. marts 2004 - 17:31 Der er 17 kommentarer og
1 løsning

Menu udskrevet forskudt

Hej

Jeg sidder og fikser med en menu, men kan ikke får det til at spille som jeg vil.

Jef har en tabel i min database som ser sådan ud:

menu
------
Menuid
menuname
menusti
menuparent
menuplace
-----------

Menuparent er hvilket andet ID de ligger under, menuplace er i hvilken rækkefølge de skal stå. Dette giver en menu i flere niveauer, og det virker fint sammen med coolmenu.

Nu vil jeg godt have det udskrevet helt almindeligt som tekst. Men hvor undermenuer er rykket ind i forhold til den forgående.

sådan at det kommer til at se sådan ud:

menuhovedpunkt1
menuhovedpunkt2
    undermenu1punkt1
    undermenu1punkt2
    undermenu1punkt3
        undermenu2punkt1
        undermenu2punkt2
    undermenu1punkt4
        undermenu2punkt1
menuhovedpunkt3
menuhovedpunkt4
    undermenu1punkt3
        undermenu2punkt1
        undermenu2punkt2   

Hvordan gør jeg det?

Jeg har været ude i at konstruere et array som dette:

$menu[menuparent][menuid] = $menuname;

men jeg kan ikke gennemskue hvordan jeg skal få lavet indrykningerne.
Avatar billede olebole Juniormester
27. marts 2004 - 18:01 #1
<ole>

Ligger dine punkter i en DB? I så fald, giv mig lige din 'sgu L'  :)

/mvh
</bole>
Avatar billede htm Nybegynder
27. marts 2004 - 18:04 #2
Yep de ligger i en DB, tabellen er bygget op som beskrevet højere oppe.

Min 'Squ L' .. :-) ser sådan ud:
$sql = "SELECT * FROM tblmenu ORDER BY menuparent,menuplace";
Avatar billede olebole Juniormester
27. marts 2004 - 18:25 #3
Kan du ikke noget lignende:

function myList($parent="") {
  $sql = "SELECT * FROM `tblmenu` WHERE `parent`='".$menuparent."'";
  $res = mysql_query( $sql );
  print "<ul>";
  while ( $row=mysql_fetch_assoc($res) ) {
    print "<li>".$row["menupunkt"]."</li>";
    myList( $row["menuid"] );
  }
  print "</ul>";
}
myList();

Så kan du sætte $parent til "" eller 0 - alt efter, hvad dit første niveau har som 'menuparent'.
Endvidere bør du ikke printe ud i while-løkken, men fylde en streng-buffer i stedet og skrive den ud til sidst  :)
/mvh
Avatar billede olebole Juniormester
27. marts 2004 - 18:26 #4
Baaahhhh .... sådan:

function myList($parent="") {
  $sql = "SELECT * FROM `tblmenu` WHERE `menuparent`='".$parent."'";
  $res = mysql_query( $sql );
  print "<ul>";
  while ( $row=mysql_fetch_assoc($res) ) {
    print "<li>".$row["menupunkt"]."</li>";
    myList( $row["menuid"] );
  }
  print "</ul>";
}
myList();
Avatar billede htm Nybegynder
27. marts 2004 - 18:34 #5
Ja det er jo meget smukt det virker i hvert fald. Men hvis jeg nu i stedet for en liste ville have nogele mellemrum ind. Hvordan ville det så se ud?

Jeg vil eks. godt have en checkbox foran hver, uden at have en liste med <ul> og <li>...
Avatar billede olebole Juniormester
28. marts 2004 - 14:55 #6
Hvad skal du bruge det til - og hvordan?
Avatar billede htm Nybegynder
28. marts 2004 - 14:57 #7
Jeg skal bruge det til mit administrations interface til at rette i menuen etc.

Ville gerne se en løsning med mellemrum ind, men kan godt bruge det du har lavet. Fjerne listknapperne med css... :-)

Men ole smid et et svar, så får du nogle point. Hvis du har lyst kan du også lave den med mellemrum som indrykning :-)
Avatar billede olebole Juniormester
28. marts 2004 - 15:20 #8
Jeg er lidt 'tung bag panden' i øjeblikket, så jeg har ikke en 'sexy' version til dig på stående fod. Derfor havde jeg præcis det samme i tankerne, da jeg spurgte  ;o)
Kan du selv sætte checkboxene ind? De burde vel ikke være det store problem(?)
/mvh
Avatar billede htm Nybegynder
28. marts 2004 - 15:31 #9
Yep de er smidt på...

Men har faktisk brug for det med mellemrum eller anden tekst markering... Nemlig i forbindelse med en <select> boks. Her kan jeg jo ikke bruge <ul> <li>...

Men point skal du ha :-) tak for hjælpem.
Avatar billede olebole Juniormester
28. marts 2004 - 15:40 #10
Du må gerne lægge et select-element i et li-element, hvis det er det, du mener. Og selvtak  ;o)
Avatar billede htm Nybegynder
28. marts 2004 - 15:53 #11
Nej jeg mener at hele menuen skal udskrives i en select :-) Sådan at den er forskudt i selecten...
Avatar billede olebole Juniormester
28. marts 2004 - 16:03 #12
Æuuuv ... og
<select>
  <optgroup label="gruppe">
    <option>blabla</option>
  </optgroup>
<select>
kan desværre ikke nestes  :o|

Jeg skal prøve at tænke over det - du får jo en mail, hvis jeg kommer i tanker om noget fikst og skriver det her  :)
/mvh
Avatar billede olebole Juniormester
28. marts 2004 - 16:05 #13
Men hvordan dælen får du en checkbox ind i en select ... eller her projektet ændret sig en anelse?  :)
Avatar billede htm Nybegynder
28. marts 2004 - 16:07 #14
:-)

Nej skal ikke have en checkbox ind i en select - men når en menu er valgt skal man kunne ændre den kategori den ligger ind under via en select. :-)

Så to dele af samme projekt...

Lyder super du skriver hvis du finder noget genialt.
Avatar billede olebole Juniormester
28. marts 2004 - 17:08 #15
Ehhhhh ... sådan(?):

<SELECT>
  <SELECT>
    <SELECT>
    <SELECT>
  <SELECT>
<SELECT>
<SELECT>
Avatar billede olebole Juniormester
28. marts 2004 - 17:09 #16
Du må nok lige forklare dig helt tydeligt ... ellers er jeg bange for, jeg ikke forstår - og så spilder vi bare begge tid  ;o)
/mvh
Avatar billede htm Nybegynder
28. marts 2004 - 17:10 #17
Nej sådan:

<select
  <option>Hovedmenupunkt</option>
  <option>  undermenupunkt</option>
  <option>    undermenupunkt til undermenupunkt</option>
  <option>  undermenupunkt</option>
  <option>Hovedmenupunkt</option>
</select>
Avatar billede olebole Juniormester
28. marts 2004 - 17:36 #18
oki ... så er vi enige - jeg prøver at lægge cellen i blød  :)
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