php-code in onchange-Statement und Abfrageproblem

WiZdooM

Erfahrenes Mitglied
Hi

Ich fülle nach einer DB abfrage ein Drop-Down-Feld mit ca 1800 Einträgen.
Jetzt würde ich gerne mit dem onchange-Statement folgende Abfrage an die DB machen:
Code:
SELECT Logo FROM haendlerdaten WHERE HDNr = ?
Hier hängts grade, da ich nicht genau weiß wie ich jetzt das selektierte Element ansprechen kann.

Wichtiger ist aber die Frage ob ich im "onchange"-Statement nur Javascript verwenden kann oder ob sich das auch für PHP verwenden lässt.
Wenn es kein PHP zulässt, wie würde dann ein DB-Abfrage Javascript aussehen ?

Danke schonmal für Antworten und Entschuldigung für die Fragestellung über 3 Bereiche :D
 
Hi,

du liegst richtig. Im onChange-Event kann man nur JavaScript ausführen. Wenn du PHP Code hinein schreiben würdest, wird er natürlich auch ausgeführt, allerdings nur einmal, wenn die Seite auf dem Server gebaut wird. Und zu der Zeit steht noch nicht fest, was der User ausgewählt hat. Geschweigedenn, dass der PHP Code noch auf Änderungen an der Dropdown-Box reagieren könnte.

Es gibt also zwei Lösungen:

1) AJAX: Du rufst im onChange-Event eine JavaScript-Funktion auf, die wiederum einen asynchronen HTTP-Request an ein PHP-Script startet und die Auswahl des Dropdowns übergibt. Dieses Script startet die MySQL-Abfrage und gibt die URL des Bildes zurück. Das JavaScript auf Client-Seite empfängt die URL und zeigt das Bild an (Stichwort: DOM).

2) Wenn die Seite geladen wird, holst du ALLE URLs aus der Datenbank und erstellst mit PHP zusätzlich zum HTML Code auch einen JavaScript-Teil, in dem du ein Array mit allen URLs definierst. Das onChange-Event ruft dann eine JavaScript-Funktion auf, die anhand der Auswahl das richtige Bild aus dem JavaScript-Array holt und anzeigt. Wenn es keine langen Liste im DropDown ist, sprich das Array nicht sehr lang wird, würde ich persönlich diese Methode bevorzugen. [edit] OK, hab grad gesehen, dass es 1800 Einträge sind. Das ist natürlich sehr viel. Hier würde ich also die erste Methode nehmen.[/edit]

Ich hoffe, das gibt dir einen Denkanstoß ;)
DJ
 
Zuletzt bearbeitet:
Danke dir DJ. Ich habe mir schon so etwas gedacht.

Ich werde da noch etwas basteln um das auf andere Art zu lösen.
 
Zurück