Es war zu viel zum ändern. ich habe Alles umgeschrieben
PHP-Code:
function GetXmlHttpObject() {
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject) { // code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
function stateChanged() {
//alert (xmlhttp.readyState);
if (xmlhttp.readyState==4)
{
//alert (xmlhttp.readyState);
returntext=xmlhttp.responseText;
//alert (returntext);
document.getElementById("txtHint").innerHTML= returntext;
}
//alert ("after return");
}
function showUser() {
var z=document.getElementById('land');
var str=z.options[z.selectedIndex].id;
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null) {
alert ("Your browser does not support XMLHTTP!");
return;
}
//alert (xmlhttp);
var url="show/dropdown.php";
url=url+"?q="+str;
//alert (url);
xmlhttp1.onreadystatechange=stateChanged;
xmlhttp1.open("GET",url,true);
xmlhttp1.send(null);
}
<select name='land' id='land' onchange='showUser()' class='form'>;
<?
// und hier muss du die liste der Bundeslander mit id als option schreiben (wie unten)
//<option id="Bundesdland id'>Bundes land name</option>
?>
</select>
<b>Vorhandene Orte werden hier angezeigt</b>
<div id="txtHint"></div>
file dropdown.php
PHP-Code:
<?//*********************************?>
<?php
$q=$_GET["q"];
if (isset ($_GET["q"])) {
$q=(int)$_GET["q"]// nehme ich an, q ist integer
}
echo "<select name='ort' id='ort' class='form'>";
$sql="SELECT * FROM ort WHERE idland =$q";
$result = mysql_query($sql) or die ('Err: ' . mysql_error());
echo "<select name='ort' class='form'>
<option value=''>Bitte wählen...</option>";
// Warum wiederholst Du die frage?
/*$query="SELECT * FROM ort WHERE idland = $q";
$ergebnis = mysql_query($query) or die("Err.:".mysql_error());
//echo ($query);*/
while($row=mysql_fetch_array($result)){
echo "<option value={$row['id']}>{$row['ort']}</option>";
} //while $row
echo "</select> ";
Übrigens Du solltest die Auswahl des users in ein anderes Feld üubergeben, weil der neue Select wird nicht weiter bei absenden übergeben.
Ich weiss nicht, ob Du noch andere Felder in deinem Formular bearbetest, aber am Anfang und Ende solltest öffnen <Form> und dann schliessen </from> haben.
Ich rate dir in Zukunft Ajax nich wie hier zu fuss zu benutzen. Du solltest die bibliotheken jquery.js oder prototype.js benutzen. Es ist dann einfacher un schneller
