[MySQL] Listboxes vullen

Pagina: 1
Acties:
  • 169 views sinds 30-01-2008
  • Reageer

  • Harmsen
  • Registratie: November 2000
  • Nu online
Goeiemiddag

Een klein vraagje. Wij zijn bezig met een website en willen een listbox vullen met subcategorien die aan de hand van een eerdere listbox selectie( met daarin hoofdcategorien) moet worden gevuld vanuit een MySQl database.

kleine verduidelijking:
er zijn 2 listboxen, uit de ene kies je een hoofdcategorie die gevuld word uit een database. Dit is geen probleem. Nu moet aan de hand van de selectie die gemaakt word in die eerste hoofdcategorie database de 2e listbox gevuld worden met subcategorien die bij de gekozen hoofdcategorie horen.

Het probleem is dat er onchange functie in Javascript eraan gehangen moet worden, die automatisch de 2e listbox vult zodra de er een hoofdcategorie in de 1 e wordt gekozen, maar we weten niet hoe dit moet en willen graag een andere manier dan javascript hiervoor vinden.
Kunnen jullie een voorzet/id geven hoe dit zou moeten?

We hebben gekeken naar bijvoorbeeld www.autotrader.nl waar je een automerk kan kiezen en daarna aan de hand van dat merk een model uit een listbox kan krijgen. Zo ongeveer willen we het hebben, alleen als het kan zonder javascript maar kan dit wel?? bijvoorbeeld in PHP oid(kennis daarvan is aanwezig)

de tabel categorien ziet er als volgt uit in MySQL:
code:
1
2
3
4
5
6
7
  | Cat_id Nr  | Cat_Capt | Sub_Cat_id | Sub_Cat_Capt |
  -----------------------------------------------------
  | 1       |  Mensen  |     1  | Benen   |
  | 1       |  Mensen  |     2  | Armen   |
  | 2       |  Dieren  |     1  | Poten   |
  | 2       |  Dieren  |     2  | Vleugels     |
  -----------------------------------------------------

What a fine day for Science! | Specs


Verwijderd

javascript in combinatie met serverside scripting is de way to go.

een tip voor de categorietabel:

als je wil dat een categoriestructuur zich tot in het oneindige kan vertakken gebruik dan een "selfrefferencing" structuur.

in jou geval

---------------
id naam parent
---------------
1 mensen null
2 dieren null
3 armen 1
4 benen 1
5 poten 2
6 vleugels 2

  • Harmsen
  • Registratie: November 2000
  • Nu online
Op donderdag 16 mei 2002 12:19 schreef iskander het volgende:
javascript in combinatie met serverside scripting is de way to go.

een tip voor de categorietabel:

als je wil dat een categoriestructuur zich tot in het oneindige kan vertakken gebruik dan een "selfrefferencing" structuur.

in jou geval

---------------
id naam parent
---------------
1 mensen null
2 dieren null
3 armen 1
4 benen 1
5 poten 2
6 vleugels 2
Oke dat met die tabel is wel vrij logisch, gaan we over nadenken.

Alleen dat javascript, heb jij of iemand anders een id voor die onchange? we hebben vrij weinig(zeg maar zip) verstand van hoe je javascript toevoegd aan zoiets.

Heeft iemand een idee hiervoor??

What a fine day for Science! | Specs


  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Kijk hier eens :)
Beter goed gejat als slect verzonnen :
http://pictures.autotrader.nl/javascript/cars.makelist.js

Verwijderd

ik kan me niet aan de idruk onttrekken dat het scriptje van autotrack periodiek vanuit een database wordt gegenereerd.

bruikbaar is het zeker, alleen al omdat je niet telkens als een nieuwe serie wordt gekozen de database hoeft te benaderen.

het leuke van javascript is dat het ook op het windows platform open source is :)

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 11:28
Is het niet makkelijker om twee tabellen te maken?
hoofdcat:
code:
1
2
3
hoofdcat_id   hoofdcat_capt
1        mensen
2        dieren

subcat:
code:
1
2
3
4
5
subcat_id   subcat_capt   hoofdcat_id
1        benen     1
2        armen     1
3        poten     2
4        vleugels   2

Dan kan je na selecteren van een hoofdcat een query uit voeren die in de tabel subcat de subcat records opzoekt.

Dat wordt dan iets van:
SELECT subcat_capt FROM subcat WHERE hoofdcat_id=1

  • Harmsen
  • Registratie: November 2000
  • Nu online
Op donderdag 16 mei 2002 15:01 schreef aquarius het volgende:
Is het niet makkelijker om twee tabellen te maken?
hoofdcat:
code:
1
2
3
hoofdcat_id   hoofdcat_capt
1        mensen
2        dieren

subcat:
code:
1
2
3
4
5
subcat_id   subcat_capt   hoofdcat_id
1        benen     1
2        armen     1
3        poten     2
4        vleugels   2

Dan kan je na selecteren van een hoofdcat een query uit voeren die in de tabel subcat de subcat records opzoekt.

Dat wordt dan iets van:
SELECT subcat_capt FROM subcat WHERE hoofdcat_id=1
Ja dat is idd wel makkelijker ja en bedankt voor de tip, alleen waar moet ik die query implementeren?? in een functie of procedure ofzo?

What a fine day for Science! | Specs


Verwijderd

Op donderdag 16 mei 2002 15:18 schreef Huntor het volgende:

[..]

Ja dat is idd wel makkelijker ja en bedankt voor de tip, alleen waar moet ik die query implementeren?? in een functie of procedure ofzo?
Met javascript kan je volgens mij niet makkelijk iets uit de db halen, is dus niet 'the way to go'. Wat de makkelijkste (en ik denk ook meest gebruikte) oplossing is:

Gebruik de twee tabellen structuur van Aquarius en vul je eerste lisbox. In de select tag zet je iets als:
code:
1
onChange="submit();"

dan laad je de pagina opnieuw, maar nu dus met het hoofdcat_id van de zojuist gekozen categorie. Dan kun je met een query zoals die van (wederom) Aquarius je tweede lijst vullen. Dan zorg je dat die tweede lijst in een ander form zit met eventueel in een hidden input de hoofdcat_id en je kan verder.

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Aangezien het maar om 4 waarden in het 'diepste' niveau gaat, is een submit niet echt wat je wilt. Dat is een stuk trager dan een oplossing met javascript. Als er niet al te veel merken of types per listbox zijn is javascript de beste oplossing.

Een werkend voorbeeld van een listbox vullen met javascript heb ik pas in elkaar geknutseld; http://www.freeforone.nl/restaurantguide/

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • Harmsen
  • Registratie: November 2000
  • Nu online
Op donderdag 16 mei 2002 15:46 schreef bigtree het volgende:
[..]

Een werkend voorbeeld van een listbox vullen met javascript heb ik pas in elkaar geknutseld; http://www.freeforone.nl/restaurantguide/
[..]
Hee thx, hier kunnen we wat mee
Op donderdag 16 mei 2002 15:46 schreef bigtree het volgende:
[..]

Gebruik de twee tabellen structuur van Aquarius en vul je eerste lisbox. In de select tag zet je iets als:
code:
1
onChange="submit();"

[..]
Kiek, hier kan ik ook wat mee :)
Kan ik 1 form apart laten refreshen dan??

What a fine day for Science! | Specs


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Op donderdag 16 mei 2002 15:54 schreef Huntor het volgende:
code:
1
onChange="submit();"

[..]

Kiek, hier kan ik ook wat mee :)
Kan ik 1 form apart laten refreshen dan??
Dat kan alleen als je frames gebruikt. Dan refresht niet je hele pagina, maar alleen het frame met één listbox. Voor een prachtig voorbeeld daarvan: belbios

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Verwijderd

Op donderdag 16 mei 2002 15:54 schreef Huntor het volgende:

[..]

Hee thx, hier kunnen we wat mee
[..]

Kiek, hier kan ik ook wat mee :)
Kan ik 1 form apart laten refreshen dan??
onChange="submit();" submit het form waarin het element met de onChange staat. Als je form in een frame staat dan zal alleen dat frame refreshen en anders de hele pagina. Wat je ook kan doen is je form een target meegeven en zo dus een ander frame refreshen.

  • knijnsel
  • Registratie: Januari 2002
  • Laatst online: 21-08 14:32

knijnsel

dus...

(jarig!)
Ik zou een sessie starten in PHP,
de hoofdcategorie default "mensen" laten zijn, tenzij de hoofdcategorie gekozen is.
De subcategorie is afhankelijk van de hoofdcategorie.

pseudo opmaak van de HTML/PHP pagina:

sessiestart()
if (notset(cat))
cat=mensen

maaklistbox1()
maaklistbox2(cat)

einde pagina.

duidelijk? succes.

<knijnsel> De nederlandstalige GuildWars site


Verwijderd

wat een nivo :(

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 21 mei 2002 00:08 schreef iskander het volgende:
wat een nivo :(
Tja, niet iedereen is zo geweldig als jij bent.
Als je het niet bevalt ga je toch lekker ergens anders heen?

Verwijderd

nielsz:

gaat me niet om de techniek maar om het feit dat diegenen die reageren niet eens de moeite hebben genomen dat js scriptje te bekijken. jou reactie waardeer ik wel maar je hebt niet deelgenomen aan het topic (in de zin van een constructieve bijdrage) en dus vin ik dat jij maar ergens anders heen moet gaan.

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:47
iskander, uw post 'wat een niveau' is ook niet echt een constructieve bijdrage te noemen.
Als je het niet eens bent met iemand, of je vind dat iemand de thread of bijhorende 'documentatie' niet doorlezen of bekeken heeft, dan is het beter om dat duidelijk te maken dan enkel 'wat een niveau' te posten. Ik denk dat heel wat users zich mogelijks aangevallen kunnen voelen, en dat komt de sfeer niet ten goede.

https://fgheysels.github.io/


Verwijderd

daar heb je helemaal gelijk in.
iedereen maakt wel eens een fout is het niet ?
mijn exuses voor die post, ik had er meteen al spijt van.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 21 mei 2002 09:29 schreef iskander het volgende:
mijn exuses voor die post, ik had er meteen al spijt van.
Goedzo :)
whoami sprak nette woorden :)

Nou weer verder ontopic jongens.
Pagina: 1