Dynamiske drop-downs i PHP (teoretisk)
Jeg er desværre kørt lidt fast, og mangler et par idéer til løsning af følgende problem, helst med mest mulig genbrugelig kode.Resultatet:
Der skal opbygges en drop-down liste, hvor brugeren kan vælge én mulighed. Så langt så godt, jeg er kommet frem til at det nok er lettest med en funktion, der klarer opbygningen af select-koden. Det går fint nok, og giver noget i stil med dette eksempel:
[ Vælg noget her ]
[ Submit ]
Problemet:
Hver valgmulighed kan også indeholde en ny underkategori, og disse har jeg valgt at fører videre med value="1234|HasChild" i select-boksen - som så splittes op igen på "|" (pipe) når værdien tjekkes. Det virker også, men - og nu kommer det komplicerede - hver af disse nye underkategorier kan også indeholde egne underkategorier (i teorien uendeligt, men i praksis nok ikke mere end 2-3 gange). Det har jeg forsøgt at vise i dette eksempel (viser select-bokse efter 2 gange submit, hvor hver af de valgte havde en underkategori):
[ Mulighed A ]
[ Mulighed B (under A) ]
[ Mulighed C (under B) ]
[ Submit ]
Altså skal de tidligere select-bokse følge med, og vises med deres respektive valg. Formen submit'er til sig selv, og skal sådan set bare behandle hver valgmulighed og afgøre hvorvidt der skal vises nuværende + en ny select-boks (underkategori) eller om værdien blot skal gemmes (såfremt den sidst valgte select-boks ikke har en underkategorier).
Det lyder måske ikke umiddelbart så svært, men problemet i det er det dynamiske. Jeg ved ikke på forhånd om der vil være 1, 3 eller ingen underkategorier, da dette skal tilpasse sig i henhold til de forskellige valg. Derfor forsøger jeg at genbruge koden, så man ikke skal skrive en hulens masse nested if-sætninger, som alligevel aldrig vil være uendelige. Jeg har overvejet både nestede funktioner, while løkke m.m., men det er ikke lykkedes mig at få det til at virke efter hensigten. Endvidere har jeg også et problem med at navngive hver enkelt select-boks. I starten tænkte jeg på at bruge et enkelt array som navn til alle select-bokse, men jeg synes ikke rigtig jeg har så meget kontrol over hver enkelt boks på den måde. Det er muligt jeg har grebet det forkert an, og det i virkeligheden er den bedste måde alligevel...
Jeg håber nogle herinde kan komme med lidt forslag til løsning af dette problem. Det må gerne være pesudo-kode, så længe jeg bare nogenlunde kan gennemskue hvilke PHP funktioner der kan bruges, og hvad deres formål er :o)
Min server har i øvrigt PHP5, og som nogle sikkert har gættet hentes indholdet til select-boksene fra en DB. Men det er knap så vigtigt, da jeg ikke har problemer med at hente og præsentere dataene som select-bokse, problemet opstår først ved at der skal laves flere sammenhængende select-bokse, og helst uden alt for meget gentagelse i koden.