Hallo zusammen,
ich sitze nun schon seit ein paar stunden vor diesem und auch anderen Foren und versuche eine Lösung für mein Problem zu finden. Folgendes soll realisiert werden:
Ich arbeite mit PHP/mySQL und möchte ein formular erstellen, in welchem der Anwender über 3 Dropdownfelder Seine Adresse eingeben kann. Die Dropdownfelder sind PLZ, Ort und Strasse. Die entsprechenden Tabellen dazu sind in der mySQL DB. Die Dropdownfelder sollen dynamisch mit diesen Tabelleninhalten gefüllt werden, wobei in das 2. und 3. Feld erst nach der Aktualisierung des vorangegangenen Feldes die zutreffenden Daten aus der DB eingelesen werden sollen. ich muss dazusagen, dass ich zwar gutes Verständnis von PHP/mySQL hab, aber AJAX und JS sind für mich völliges Neuland!
ZU diesem Thema habe ich mir bereits diese threads durchgelesen:
coder-wiki.de/HowTos/Ajax-Inha…-PHP-und-Select-nachladen
Zweite Select-Feld in Abhängigkeit vom ersten?
Ich benutze den Code aus dem ersten Beispiel und habe ihn für meine Zwecke angepasst.
index.php
Alles anzeigen
func.php
Alles anzeigen
es funktioniert alles soweit, dass ich alle gewünschten PLZ im ersten Dropdownfeld angezeigt bekomme und auch auswählen kann. sobald ich eine Auswahl getroffen habe, werden mir die treffenden Orte allerdings nicht in einem weiteren Dropdownfeld angezeigt ("dropdown2") sondern in dem div "inhalt". Und hier liegt mein Problem: Ich verstehe den JS Code nicht soweit, dass ich weiß wie ich die Werte an ein weiteres Dropdownfeld übergeben kann. Ich kann zwar deuten, dass die Übergabe in diesem Abschnitt (wahrscheinlich Zeile 3) stattfindet, aber weiß nicht weiter.
Wie kann ich jetzt die Orte, die zu der ausgewählten PLZ passen im 2. Dropdownfeld anzeigen lassen. Sie sollen ebenfalls auswählbar sein, damit in einem 3. Dropdownfeld eine Strasse ausgewählt werden kann. Alle Formularfelder sollten optimalerweise schon die ganze Zeit sichtbar sein aber evtl. gesperrt.
Ich hoffe ich konnte das soweit verständlich erklären und bin für jede Hilfe dankbar!
ich sitze nun schon seit ein paar stunden vor diesem und auch anderen Foren und versuche eine Lösung für mein Problem zu finden. Folgendes soll realisiert werden:
Ich arbeite mit PHP/mySQL und möchte ein formular erstellen, in welchem der Anwender über 3 Dropdownfelder Seine Adresse eingeben kann. Die Dropdownfelder sind PLZ, Ort und Strasse. Die entsprechenden Tabellen dazu sind in der mySQL DB. Die Dropdownfelder sollen dynamisch mit diesen Tabelleninhalten gefüllt werden, wobei in das 2. und 3. Feld erst nach der Aktualisierung des vorangegangenen Feldes die zutreffenden Daten aus der DB eingelesen werden sollen. ich muss dazusagen, dass ich zwar gutes Verständnis von PHP/mySQL hab, aber AJAX und JS sind für mich völliges Neuland!
ZU diesem Thema habe ich mir bereits diese threads durchgelesen:
coder-wiki.de/HowTos/Ajax-Inha…-PHP-und-Select-nachladen
Zweite Select-Feld in Abhängigkeit vom ersten?
Ich benutze den Code aus dem ersten Beispiel und habe ihn für meine Zwecke angepasst.
index.php
HTML-Quellcode
- <html><head>
- <title>AJAX PHP Beispiel mit Select</title>
- <script type="text/javascript">
- <!--
- function sendRequest() {
- var req;
- try {
- req = window.XMLHttpRequest?new XMLHttpRequest():
- new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e) {
- //Kein AJAX Support
- }
- req.onreadystatechange = function() {
- if ((req.readyState == 4) && (req.status == 200)) {
- document.getElementById('inhalt').innerHTML = req.responseText;
- }
- };
- var id = document.getElementById('dropdown').value;
- req.open('post', 'func.php');
- req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- req.send('s='+ id);
- }
- //-->
- </script>
- </head>
- <body>
- <p />Wählen Sie einen Eintrag aus um den Inhalt zu laden
- <p />
- <p>
- <select id="dropdown" onChange="sendRequest()">
- <?
- include("connection.inc");
- $connection = mysql_connect($host, $user,$password)
- or die ("Ein Fehler ist aufgetreten: Verbindung zum Server konnte nicht hergestellt werden.");
- $db = mysql_select_db($database, $connection)
- or die ("Ein Fehler ist aufgetreten: Verbindung zur Datenbank des Störungsmeldecenters (RWE-SMC) konnte nicht hergestellt werden.");
- $result = mysql_query("SELECT DISTINCT plz from strasse");
- while($row = mysql_fetch_object($result))
- {
- echo '<option value="'.$row->plz.'">'.$row->plz.'</option>';
- }
- ?>
- </select>
- </p>
- <div id="inhalt"></div>
- <p>
- <select name="dropdown2" id="dropdown2">
- </select>
- </p>
- <p>
- <select name="dropdown3" id="dropdown3">
- </select>
- </p>
- </body></html>
func.php
PHP-Quellcode
- <?php
- include("connection.inc");
- $connection = mysql_connect($host, $user,$password)
- or die ("Ein Fehler ist aufgetreten: Verbindung zum Server konnte nicht hergestellt werden.");
- $db = mysql_select_db($database, $connection)
- or die ("Ein Fehler ist aufgetreten: Verbindung zur Datenbank des Störungsmeldecenters (RWE-SMC) konnte nicht hergestellt werden.");
- //Inhalte laden
- $query = mysql_real_escape_string($_POST['s']);
- $result = mysql_query("SELECT hauptort.name from hauptort join strasse on hauptort.tid=ort_id_fk where plz='{$query}' group by hauptort.name order by hauptort.name;");
- echo($query);
- while($row = mysql_fetch_object($result))
- {
- echo '<p /><b>'.$row->name.'</b><br />';
- }
- ?>
es funktioniert alles soweit, dass ich alle gewünschten PLZ im ersten Dropdownfeld angezeigt bekomme und auch auswählen kann. sobald ich eine Auswahl getroffen habe, werden mir die treffenden Orte allerdings nicht in einem weiteren Dropdownfeld angezeigt ("dropdown2") sondern in dem div "inhalt". Und hier liegt mein Problem: Ich verstehe den JS Code nicht soweit, dass ich weiß wie ich die Werte an ein weiteres Dropdownfeld übergeben kann. Ich kann zwar deuten, dass die Übergabe in diesem Abschnitt (wahrscheinlich Zeile 3) stattfindet, aber weiß nicht weiter.
Quellcode
- req.onreadystatechange = function() {
- if ((req.readyState == 4) && (req.status == 200)) {
- document.getElementById('inhalt').innerHTML = req.responseText;
- }
- };
- var id = document.getElementById('dropdown').value;
- req.open('post', 'func.php');
- req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- req.send('s='+ id);
Wie kann ich jetzt die Orte, die zu der ausgewählten PLZ passen im 2. Dropdownfeld anzeigen lassen. Sie sollen ebenfalls auswählbar sein, damit in einem 3. Dropdownfeld eine Strasse ausgewählt werden kann. Alle Formularfelder sollten optimalerweise schon die ganze Zeit sichtbar sein aber evtl. gesperrt.
Ich hoffe ich konnte das soweit verständlich erklären und bin für jede Hilfe dankbar!