Hallo zusammen !
Ich habe ein kleines Problem. Ich möchte gerne für User ein "Suchscript" zur Verfügung stellen, jedoch bekomme ich das nicht so hin, wie ich mir das vorstelle.
Es gibt in der Datenbank folgende Tabellen:
Land
ID | Land
Bsp.: 1 | Deutschland
2 | Schweiz
Region
ID | Land (Abkürzung z.B. Deutschland = DL) | Region
Bsp.: 1 | DL | Nordrhein-Westfalen
Stadt
ID | Region (Abkürzung z.B. Nordrhein-Westfalen = NRW) | Stadt
Bsp.: 1 | NRW | Düsseldorf
2 | NRW | Köln
Nun soll es 4 Select Felder geben, die nach jedem auswählen die Seite neu lädt und mit der Funktion POST direkt die ergebnise in die andere Select-Box lädt.
z.B. User wählt aus:
Deutschland (Seite wird neu geladen)
Nordrhein-Westfalen (Seite wird neu geladen)
Düsseldorf
Ich hab das mal mit "verschachtelten auswahlfeldern" versucht, jedoch klappt das leider nicht so, wie ich mir das vorstelle.
Folgendes Script habe ich ausprobiert:
select.php
ajax.php
Vielleicht weiß einer von euch ja, wie ich das mit MySql lösen könnte.
LG Steffen
Ich habe ein kleines Problem. Ich möchte gerne für User ein "Suchscript" zur Verfügung stellen, jedoch bekomme ich das nicht so hin, wie ich mir das vorstelle.
Es gibt in der Datenbank folgende Tabellen:
Land
ID | Land
Bsp.: 1 | Deutschland
2 | Schweiz
Region
ID | Land (Abkürzung z.B. Deutschland = DL) | Region
Bsp.: 1 | DL | Nordrhein-Westfalen
Stadt
ID | Region (Abkürzung z.B. Nordrhein-Westfalen = NRW) | Stadt
Bsp.: 1 | NRW | Düsseldorf
2 | NRW | Köln
Nun soll es 4 Select Felder geben, die nach jedem auswählen die Seite neu lädt und mit der Funktion POST direkt die ergebnise in die andere Select-Box lädt.
z.B. User wählt aus:
Deutschland (Seite wird neu geladen)
Nordrhein-Westfalen (Seite wird neu geladen)
Düsseldorf
Ich hab das mal mit "verschachtelten auswahlfeldern" versucht, jedoch klappt das leider nicht so, wie ich mir das vorstelle.
Folgendes Script habe ich ausprobiert:
select.php
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Verschachtelte Auswahlfelder - AJAX</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
//<![CDATA[[
var multiSelect = {
defaultOptions: {},
change: function(select) {
$.getJSON(
"ajax.php?" + select.name + "=" + encodeURIComponent(select.value),
function(response) {
var form = select.form, text;
window.console.debug(response);
for (var element in response) {
select = form.elements[element];
multiSelect.clear(select);
for (var value in response[element]) {
text = response[element][value];
select.options[select.options.length] = new Option(text);
}
}
}
);
},
clear: function(select) {
for (var i = select.options.length - 1; i > 0; --i) { // exclude "- Bitte .. auswählen -"
select.options[i] = null;
}
}
}
//]]>
</script>
</head>
<body>
<form action="" method="post">
<fieldset>
<legend>Kontinent</legend>
<select name="continent" onchange="multiSelect.change(this)">
<option>Amerika</option>
<option>Asien</option>
<option>Afrika</option>
<option>Europa</option>
<option>Australien</option>
</select>
</fieldset>
<fieldset>
<legend>Land</legend>
<select name="country" onchange="multiSelect.change(this)">
<option value="">- Bitte auswählen -</option>
</select>
</fieldset>
<fieldset>
<legend>Stadt</legend>
<select name="city" onchange="multiSelect.change(this)">
<option value="">- Bitte auswählen -</option>
</select>
</fieldset>
<div>
<input type="submit" />
</div>
</form>
</body>
</html>
PHP-Code:
<?php
$data = array(
"Amerika" => array(
"USA" => array(
"New York",
"Los Angeles"
),
"Kanada" => array(
"Toronto",
"Vancouver"
)
),
"Asien" => array(
"China" => array(
"Peking",
"Shanghai"
)
),
"Australien" => array(
"Australien" => array(
"Sydney",
"Perth"
),
"Neuseeland" => array(
"Wellington"
)
),
"Europa" => array(
"Deutschland" => array(
"Berlin",
"Karlsruhe"
),
"Italien" => array(
"Rom",
"Mailand"
)
)
);
if (isset($_GET["continent"])) {
$response = array(
"country" => array_keys($data[$_GET["continent"]]),
"city" => array()
);
echo json_encode($response);
exit;
}
if (isset($_GET["country"])) {
foreach ($data as $continent => $countries) {
foreach ($countries as $country => $cities) {
if ($country == $_GET["country"]) {
echo json_encode(array("city" => $cities));
exit;
}
}
}
}
echo json_encode(new stdClass());
exit;
LG Steffen
Kommentar