23. august 2010 - 10:18Der er
21 kommentarer og 1 løsning
Dynamisk "menu"-struktur baseret på PHP/MySQL
Ja, jeg kunne ikke lige komme på en bedre beskrivelse i titlen, og forklaringen bliver sikkert ikke bedre, men here I go...
Men jeg skal bruge til hjælpe til at lave noget lignede en dynamisk menustruktur, bare ikke som menu.
Jeg har et intranet, hvor en siden skal vise et teoretisk antal kolonner og rækker.
Jeg har nogle over- og mellemniveau, som kan fanges i PHP via nogle arrays kaldet for hovedakt og underakt. Disse symbolisere den overordede struktur, hvor jeg gerne vil have at de kan foldes ud og ind, ligesom en menu. Under hvert underakt skal der så være en uendeligt antal rækker, som brugeren har mulighed for at skrive i.
Jeg prøver lige at illustere det.
I sammenfoldet stand: + Hovedakt_1 (navnebeskrivelse) | Pris (en samlet pris, for alle underakter) + Hovedakt_2 + Hovedakt_3 . . .
I halvt udfoldet stand: - Hovedakt_1 | Pris + Underakt_1 | Pris (En samlet pris, for den enkelte underakt) + Underakt_2 | Pris . . . + Hovedakt_2 | Pris + Hovedakt_3 | Pris . . .
I helt udfoldet stand: - Hovedakt_1 | Pris - Underakt_1 | Pris Felt til beskrivelse | Felt til prisen Felt til beskrivelse | Felt til prisen Felt til beskrivelse | Felt til prisen . . . + Underakt_2 | Pris . . . + Hovedakt_2 | Pris + Hovedakt_3 | Pris . . .
Meningen er så, at der fra start af kun skal være en tom række under hvert underakt, men i takt med at de bliver udfyldt, skal der altid være mulighed for at tilføje en mere. På samme måde skal kolonnerne med priser fungere. Her skal prisen bare låses før der kommer en ny kolonne.
Men for at gøre en lang historie kort, så er det jeg i første omgang skal have hjælpe til, at skabe den dynamik, der er i kunne folde Hovedakt og underakt ud og ind, samtidig med at der vises felter for de aktuelle niveauer.
Håber at det blev bare nogenlunde til at forstå...
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Ja, data til "menu" skal så bare trækkes fra henholdsvis en MySQL DB og en php siden, hvor arrayet til hovedakt og underakt ligger i.
Jeg har søgt lidt på nettet for at finde et eksempel, men dem jeg har fundet, er dynamsike på den måde, at undermenuerne vises når musen er over og forsvinder når de er væk. Her skal det være fast, ligesom Stifinderens mappevisning.
Hmm, okay det kom jeg så ikke så kangt med. Jeg kan godt få lagt mine egen hoved- og underakter ind, men jeg kan ikke lige gennemskue, hvordan jeg så igen, skal få underaktene til at udfolde sig, og deri have x-antal input felter.
Hvordan får jeg tilføjet inputer på nederste niveau enten i ovenstående eller i et andet eksempel. Det må gerne være simpelt ved et event. andet eksempel.
umiddelbart vil jeg tro at det er "nemmere" at lave det fra bunden, du kan jo starte med at lave en alm liste med <ul> og <li> som du kan skjule/vise når der klikkes.
når det spiller kan du tilføje koden der opretter nye punkter
Den er dog ikke helt færdig, for jeg skal have et niveau mere på eller øverst, men da indholdet til dette niveau også kommer fra et array, skal jeg lige have kringlet hvordan jeg får den inden, uden at ødelægge det nuværende.
Men jeg er kommet dertil, hvor jeg skal have bare én vis/skjul til at virke på et punkt. Det har jeg dog endnu ikke fundet af hvordan det skal gøres.
Ja, det fandt jeg også lige ud af. Jeg fandt et meget simpelt script, der virkede på <div>, så jeg tror det ender med at jeg smide <div> rundt om de aktuelle elementer, og så kalde funtionen.
<script language="javascript"> <!-- var state = 'none';
function showhide(layer_ref) {
if (state == 'block') { state = 'none'; } else { state = 'block'; }
if (document.all) { //IS IE 4 or 5 (or 6 beta) eval( "document.all." + layer_ref + ".style.display = state"); }
if (document.layers) { //IS NETSCAPE 4 or below document.layers[layer_ref].display = state; }
Den eneste grund til div, var at kildeforfatteren skrev den var lavet til div, så det startede jeg med at prøve. Jeg har ikke nåete at prøve om den kan virke direkte på li-tags, men det vil jeg da lige.
p.s. Fedt med de tags, vidst slet ikke der var så mange, omend jeg kun vil bruge et fåtal af dem.
Hmm, jeg kunne ikke lige få koden til at virke på <li>, så melder den at det ikke er at objekt.
Samtidig har jeg opdaget en lille uhensigtsmæssighed. Nu har jeg jo 3 niveauer i listen, hvor man skal kunne klikke på de 2 øverste. Jeg starter med at de alle skjult, så man kun kan se øverste niveau, men når jeg klikker og folder det ud, og herefter klikke på niveau 2, så sker der ikke noget, før jeg klikker igen. Det samme sker den anden vej.
Det er som om, at den ikke fatter det første klik, når man klikker på en andet niveau, men klikket lige før.
Det er sikkert fordi der lige skal tilpasses et eller andet i scriptet, men det har jeg ikke lige tid til at kigge nærmere på.
Men det ser ud til at virke, bort set fra det problem, med at det er som om den ikke alt fatter at man klikker, når man skifter imellem niveauerne.
Jeg kan ikke rigtigt se hvorfor, men tror måske det kan have noget at gøre med at jeg pt. bare bruger tekst som link, og selvom at jeg får "klik-hånd" ikoner frem, så rammer jeg måske lige netop uden for teksten.
Senere skal jeg have lagt pænere styles på dem, så kan jeg teste der om der har noget at sige.
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.