"We are back" « oc.at

dynamisches füllen 2er listboxen

Snooze 12.12.2003 - 19:43 1429 14
Posts

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
es geht um 2 listboxen auf einer website (php), die dynamisch während der laufzeit mit daten aus einer mysql-db gefüllt werden sollen.
wird in der ersten listbox etwas ausgewählt, so soll sich dynamisch dazu die 2. listbox füllen.
ich bin schon soweit, daß die listboxen testhalber mit daten aus der db gefüllt werden. ich hab auch schon probiert, auf veränderungen in der 1. listbox mit 'onchange=...' zu reagieren. nur steh ich da jetzt irgendwie an, weil ich denke, man müßte das irgendwie mit eine javascript-funktion erledigen, die ich bei diesem onchange aufrufe.
da ich mich aber mit javascript ned auskenn (wie ich dort eine verbindung zu db aufbau etc.) wollt ich euch mal fragen, ob mir ein guru
unter euch da weiterhelfen kann! :)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
du wirst die seite neuladen müssen, wenn in der ersten listbox was ausgewählt wird - mir ist keine möglichkeit bekannt mir der man eine mysql-verbinung mittels javascript herstellen könnte - und selbst wenn wäre sie nicht zu empfehlen, da's mit der sicherheit dann nicht wirklich gut stehn würde...

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
ok, das ist ja ned weiter schlimm, wenn ich die seite dann neu lade.
nur wie mach ich das, dass bei klick auf die listbox anschließend ein paar variablen gesetzt werden und automatisch die seite neu geladen wird?

Sir_Gunslinger

Bloody Newbie
Registered: Sep 2003
Location: Vienna
Posts: 23
Hi!

Mach einfach ein Javascript indem du die benötigten Werte (Wert des gewählten Elements in der Listbox)ausliest und dann die Seite nochmal neu lädst. Aufgerufen wird das ganze mittels onChange bei der Listbox!
Hoffe das hilft!

Mfg

Gunnie
Bearbeitet von Sir_Gunslinger am 12.12.2003, 20:41

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
wie schon gesagt, ich kenn mich mit javascript nicht aus.
kann ich überhaupt aus dem script heraus auf die durch php
erstellte variable zugreifen? (hört sich jetzt vielleicht extrem
newbie-isch an, aber wenn man's noch nie gemacht hat.. :p )
und wie geht der code, um eine seite aus dem script heraus neu
aufzurufen?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
http://www.overclockers.at/showthre...threadid=101131

da dropdown nur eine liste mit size=1 is ...

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
Eine andere Methode die es noch gibt ist, alle moeglichen Werte zu Laden.

1) du laedst alle Werte fuer Listbox1
2) du laedst fuer jeden Wert in Listbox1 die zugehoerigen Werte fuer Listbox2
3) Du benutzt dann JS um bei klick auf einem Wert in Listbox1 die Inhalte von Listbox2 zu aendern (du kannst ja per JS dynamsich Inhalte loeschen, anlegen, usw) oder
4) du gibst Listbox1 aus und alle anderen Listboxen und versteckst mit CSS und je nachdem welche Wert in Listbox1 ausgewaehlt wird die jeweilige Listbox2 einfach angezeigt (display Property setzen; ev. in einen block-Element container packen und diesen Ein- und Ausblenden) ODER
5) Du bist mega-advanced und nutzt das XmlHTTPequest-Objekt in JS (jeweils IE und Gecko haben eines implementiert); da er laubt die per JS auf einer einzelnen Seite Inhalte (Daten) vom Webserver ohne Refresh der Seite nachzuladen.

Am aufwendigsten ist 5) gefolgt von 3); am einfachsten und kompatibelsten ist eigentlich 4).

Es ist halt auch eine Frage wieviele Daten in der Listbox angezeigt werden sollen. Wenn jeweils 100.000 Datensaetze sind, ists vielleicht net so gut alles auf einmal zu laden. Wenns aber nur jeweils ein paar Hunderte sind geht das schon ohne Probleme.

Noch Fragen ? :)

Achja, fuer 3) gibts ein Real-Life demo z.B. bei NVidias Treiber Download http://www.nvidia.com/content/drivers/drivers.asp ; je nachdem welche Werte du in den Listboxen auswaehlst, aendern sich die Inhalte der folgenden. Am einfachsten wird aber 4) sein (und gibt gegenueber 3) keine Nachteile; eher Vorteile).

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
hm, das muss ich jetzt erst mal verdaun..:confused: :)

i frag mich aber grad speziell wie ich in dem java-script meine variable verändern kann. wenn ich sie ganz normal in einer php-seite angelegt habe, kann ich ja vom script aus nicht auf sie zugreifen.
(zumindest hat es so nicht funktioniert, als ichs gerade probiert habe)

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
Zitat von Snooze
Zitat von HoTwHeeLz
14k sind normal für dein sys!
Du hast mich falsch herum verstanden. Du kannst nicht mit Javascript auf PHP Variablen zugreifen.

Du erzeugt die Listboxen2 alle mit PHP. Danach ist alles im Browser und dann kommt Javascript ins Spiel. Du kannst z.B. mit PHP die ganzen Werten fuer die Listenboxen2 als Javascript-Variablenwerte generieren und dann damit die Boxen fuellen. Aber die Display/Hide-Methode wuerde ich eher anraten, ist einfacher zu implementieren. Ich hab dir mal ein kleines Demo gemacht: http://dillerpartner.at/~mfischer/pub/js/listboxen.html

Beachten musst hier aber, das an deine Applikation immer alle Listboxen geschickt werden; du musst eben anhand einer Programmierlogik feststellen, welche fuer dich relevant ist (das ist aber wohl das geringere Uebel)

HTH

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
vielen dank für deine mühe, rektal!
find ich ausserordentlich nett von dir! :cool:
werd ich gleich mal versuchen umzusetzten.

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
%$/§" ich komm einfach ned weiter.. :(

hab mich mal der display/hide methode auseinander gesetzt. aber
ich denke, die funktioniert nur gut, wenn ich alles statisch aufbaue. d.h. im muss vorher schon wissen, weiviele listboxen2 ich brauche, dann müßte ich mittels css ja die nicht benötigten listboxen auf display:none setzten. nur, es stellt sich ja erst zur laufzeit heraus, wieviele listboxen2 ich brauche :confused:

und mein anderes großes problem ist noch, wie bekomme ich den
geänderten value-wert einer listbox in eine php-variable? ich brauche nämlich immer die 2 aktuellen listbox-value-werte um anhand dieser eine tabelle aufbauen zu können. :bash:

ich poste jetzt mal, wie das ganze im endeffekt aussehen sollte:
man lädt eine preisliste auf der sich 2 listboxen befinden. in der ersten
listbox sind artikelgruppen drinnen (herausgelesen aus einer datenbank; können sich ja jederzeit verändern)
und in die zweite listboxen sollen jeweils immer die entsprechenden artikelkategorien (je nach geladener artikelgruppe) geladen werden.
(werden auch aus datenbank gelesen, da diese auch jederzeit geändert werden können)
und wenn man anschließen auf 'anzeigen' geht, soll eine tabelle der artikel aus der angebenen artikelgruppe+kategorie dargestellt werden..

hat einer von euch schon mal sowas gemacht?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
das was du willst is doch eh simpel, ich weiss nur net ob die listboxen der usability sehr zuträglich sind...

Snooze

Little Overclocker
Registered: Sep 2000
Location: New l33t Yorky (..
Posts: 126
wenn das für dich so simpel ist, könntest du mir ein paar tipps geben wie man das codiert?
Bearbeitet von Snooze am 14.12.2003, 16:55

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
sag mir, kriegst du geld für das erstellen der HP?

das beispiel vom rektal is doch eh net schlecht... du musst es nur weiterführen, mir is nicht klar wo dein problem liegt

btw: variablen bekommst du ins php per get, post oder cookie

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4477
Zitat von Snooze
Zitat von mat
ich weiss nicht wies damals bei The Who war, aber Nirvana hats echt übertrieben.. die haben nicht mal die boxen ausgelassen :p

btw: kann sich noch jemand an die MTV music awards erinnern, als der nirvana bassist bei einem "bass smash" sein instrument von 4 meter höhe genau ins gesicht bekommen hat? so göttlich :D

Wenn du sagst "vorher wissen", dann merk' ich gelich dir fehlt noch ein wenig der Durchblick. Denn, wenn du in Listbox1 alle Artikelgruppen anzeigst, dann weisst du ja wieviele weitere Listboxen du brauchst -> fuer jede Artikelgruppe eine. Die gibst du alle aus und zeigt eben nur die an, die du in der Listbox1 ausgewaehlt hast.

Sicher musst ein bischen mehr Logik fuer das ganze einbauen.

Und, ich wuerd' mir auch die Aussagen von watchout naeher Analysieren, ob das was du machen willst "usability wise" eine gute Idee ist. Denn, ob du nun selectboxen aus und einblendest oder normales HTML ist egal; kommt aufs selbe.

Ich glaub wenn du weitere Hilfe haben willst sprengt das einfach den Rahmen den die meisten Leute in Ihrer freien Zeit zu opfern bereit sind. Es werden eher spezielle Fragen auf Details beantwortet als grosse Arbeit zu leisten.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz