Avatar billede zombien Juniormester
07. august 2013 - 10:57 Der er 10 kommentarer og
2 løsninger

Vælg indhold i en select boks udfra valgt værdi i en anden select

Hej Eksperter...

Jeg sidder og er igang med at lave en handelsside, hvor annoncernce selvfølgelig skal smides ind i forskellige kategori'er....

Så lige p.t. vælger man en hovedkategori som Elektronik eller Have & Fritid.

Hvis man så har valgt hovedkategori Elektronik, skal man kunne vælge underkategori som bærbar, netværk og diverse.

men har man valgt Have & Fritid skal man kunne vælge Potteplanter og Jord.

Da det er muligt og oprette nye hovedkategorier, er det ikke muligt at lave den basale med hidden divs...

håber nogle herinde kan hjælpe mig

det er PHP, der arbejdes i
07. august 2013 - 13:06 #1
Du kommer nok til at forklare noget mere.  Får brugeren præsenteret en html form med kategorier, og når brugeren har valgt en kategori, får brugeren så en ny html form ular med kategorien fyldt ud og hvor brugeren så kan vælge en under kategori?  Er der altid præcist to niveauer, kategori og underkategori?  Eller kan der forekomme kategorier uden under kategorier og kan der forekomme underkategorier der har under-under kategorier?  Når brugeren har valgt det laveste niveau kategori/underkategori/underunder... hvad skal der så ske?  Skal alle annoncer der svarer til valget vises?  Hvor og hvordan gemmer du kategorier og underkategorier.  Har du kodeafsnit du kan vise?
Avatar billede MadsHaupt Juniormester
07. august 2013 - 14:17 #2
Jeg har lavet et simpelt eksempel lidt lige som på eksperten.dk.
http://madshaupt.dk/tutucode/thh.html
07. august 2013 - 17:57 #3
Jeg ser, at du i eksemplet gemmer kategorier og underkategorier 'hardcoded' i en slags multi-dimensionel array.  Det er naturligvis, som du siger, ikke nogen fleksibel løsning.  Yderligere sker der ikke andet i eksemplet end at man kan vælge kategorier.  Formodenlig er meningen, at annoncerne for den valgte kategori/underkategori....skal vises.  Og du synes at gå ud fra præcis tre kategori niveauer.  Måske vil du hellere have antallet af niveauer fleksibelt. 

Jeg vil jo mene, at du skal gemme kategorierne i en database tabel, såsom:

kategorier
id parent navn
1      0      Elektronik
2      0      Have & fritid
3      1      bærbar
4      1      netværk
5      2      potteplanter
6      3      røde bærbare
7      0      vindmøller
o.s.v.
I dette eksempel er elektronik en hoved kategori, derfor er parent 0.  Elektronik har bærbare og netværk som children, derfor er parent for disse 1, id'en for elektronik, og bærbare har en tredje-niveau child røde bærbare (hvis noget sådan findes).  Netværk har i dette eksempel ingen children, og vindmøller, en hoved kategori, har ingen children.  Så siger du, at du vil have mulighed for at oprette nye hovedkategorier.  Du vil velsagtens også kunne oprette nye underkategorier og underunder kategorier.  Disse indfører du så i database tabellen.

Samtidig har du vel så annoncerne i en anden database tabel såsom

annoncer
id kategori indhold
1      7      Dette er en blå vindmølle...
2      7      Denne fine vindmølle møller mest vind .....
3      3      Du har brug for en rød, sød, og blød bærbar

Så ville jeg nok lave det således, at når den side du viser genereres, så sker der et database kald såsom "SELECT * FROM kategorier WHERE parent = 0".  Resultatet viser du så i den første rulleliste med navnet vist og med id'en hidden.  Når så brugeren har valgt en hovedkategori sker der påny et database kald noget i retning af "SELECT * FROM kategorier WHERE parent = $id", hvor $id rummer den 'hidden' id for den valgte hovedkategori.

Hvis dette database kald ikke giver resultat, det vil sige, at der ikke er underkategorier (såsom hvis vindmøller var valgt), så foretages der et nyt databasekald såsom "SELECT * FROM annoncer WHERE kategori = $id".  Annoncerne for denne kategori vises så.  Hvis der derimod er kategorier der har $id som parent, så vises rulleliste nummer to med disse kategorier, og efter valg af kategori startes der forfra:  Database kald til kategorier, hvis der ikke er bid, så vis annoncer, hvis der er bid så lav den næste rulleliste, o.s.v.   

På den måde kan der dannes, i princippet, et uendeligt antal niveauer af underkategorier, og man kan have annoncer knyttet direkte til en hovedkategori.
Avatar billede zombien Juniormester
07. august 2013 - 20:31 #4
Mads < Det ser jo meget hardcoded ud i javascriptet :/ eller er der noget der jeg har misforstået? men ellers ja, så gør det egentlig det jeg efterlyser

Christian < Det er helt korrekt kategorierne er oprettet i en database og derfor bliver det også pludselig variabler, da de kan slettes og der kan oprettes nye...

Så min kategori database opbygning ser sådan her ud

ID, kategorinavn, foraeldreid

1, Elektronik, 0
2, Have & Fritid, 0
3, Bærbar, 1
4, Skærme, 1
5, Potteplanter, 2

Så den skal jo gerne hente alle der har foraeldreid 1, i underkategori option/select når man vælger Elektronik som hovedkategori
Avatar billede zombien Juniormester
07. august 2013 - 20:32 #5
Dette er i selve opret fasen, så den skal ikke gøre noget andet end selvfølgelig tilføje værdi'erne til en sql string :)
07. august 2013 - 20:55 #6
zombien, Jeg er lige kommet hjem, en hurtig en: jeg havde misforstået #2 eller ikke kikket ordenligt efter, jeg opfattede, at den var fra dig.  Det var baggrunde for mit indlæg #3.  Jeg skal kikke igen, men det bliver nok i morgen.
08. august 2013 - 07:43 #7
zombien, ok så er jeg her igen og har fået styr på hvem der har skrevet hvilke indlæg.  Du siger i #4, at hvis man vælger Elektronik som hovedkategori skal den gerne hente alle der har forældreid 1.  Men det i sig selv kan vel ikke være et problem:  "SELECT * FROM kategori WHERE forældreid = 1" .

Men det skal naturligvis ikke være forældreid = 1, men afhænge af hvilken hovedkategori brugeren har valgt.  Så hvordan ved programmet hvad brugeren har valgt?  Brugerens valg skal jo resultere i en variabel der bliver sendt til det programafsnit der kalder databasen.  Hvis for eksempel brugerens valg bliver gemt i variabelen $valg, så bliver database forespørgslen SELECT * FROM kategori WHERE forældreid = "$valg" .  Det er vi vel også enige om.

Så hvordan har du tænkt dig at lade brugeren vælge kategori?  Hvor langt er du selv kommet med at kode det?  Det var noget af det jeg prøvede at finde ud af i min #2.
Avatar billede olsensweb.dk Ekspert
08. august 2013 - 14:50 #8
Avatar billede MadsHaupt Juniormester
10. august 2013 - 13:02 #9
Det ronols mener er at du skal poste din php fil med javascript og får underkategorierne tilbage.

Hvordan man poster til en php fil med java script: http://www.youtube.com/watch?v=woNQ2MA_0XU
15. august 2013 - 10:39 #10
zombien, kom du fra det igen?  Du har ikke været inde og reagere på indlæg siden 7 august.  Hvis spørgsmålet ikke længere er aktuelt, så luk det venligst igen.  Ellers kom ind og fortæl din videre hensigt.
Avatar billede zombien Juniormester
15. november 2013 - 07:11 #11
Hej og beklager meget det sene svar, kom da helt fra mit spørgsmål herinde så det beklager jeg meget Christian og tak fordi du mindede mig om det...

problemet er bleven løst og det blev følgende måde den blev løst på
Jeg lagde en OnChange="location.href=nav1.hovedkategori.options[selectedIndex].value" på min select

men da der er gået så langtid osv. så lig lige et svar Christian, så kan du få halvdelen af points sammen med MadsHaupt
15. november 2013 - 08:09 #12
Ok, et svar fra mig, så vi kan få spørgsmålet lukket.
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