[FRAGE] chained Select mit ajax variablen werden nicht übergeben

Tunel

New member
Hallo Forum,

ich habe ein Problem bei dem ich einfach nicht weiter komme.
Ich muss ein chained select programmieren aber das funktioniert nicht, da die variablen nicht an die Serversitepage übergeben werden.
Die variablen $q, $f und $e sind in der getstreet.php immer leer.

index.php
HTML:
<!doctype html>
<html lang="de">
	<head>
		<meta charset="utf-8">
		<SCRIPT language="JavaScript" src="func.js" type="text/javascript"></script>
		<title>Test</title>
	</head>
	<body>
<?php 
		include('./odbc_connect.inc'); 
		$sqlobjekt = "SELECT No_ AS 'no', Description AS 'des'
		FROM [RE Object] 
		WHERE 	[Management End Date] = '1753-01-01 00:00:00.000' AND 
				No_ BETWEEN '0001' AND '0998'";
 		$cur = odbc_exec($cnx, $sqlobjekt);
?>
		<form name="Form1">
			<fieldset>
				<legend>Test</legend>
				<p>
					<label>Objekt:</label>
					<select name="ddlobjekt" onchange="showStreet(this,document.Form1.ddlstreet)">
						<option value="-1">Wähle ein Objekt aus!</option>
<?php
						while($row = odbc_fetch_row($cur)){							
							$objno = odbc_result($cur,"no");
							$objdes = utf8_encode(odbc_result($cur,"des"));
							echo "<option value='" . $objno . "'>" . $objno . ", " . $objdes . "</option>";
						}	
?>			
					</select>
					
					<label>Straße/Hauseingang:</label>
					<select name="ddlstreet">
						<option value="<?php echo isset($street) ?>"><?php echo isset($street) ?></option>"
					</select>
				</p>
		  </fieldset>
		</form>	
	</body>
</html>


Hier die getstreet.php die durch die funktion showStreet aufgerufen wird.
PHP:
<?php
	header('Content-Type: text/xml');
	$strXML = '<?xml version="1.0" encoding="UTF-8"?>';
	//Variablen aus auslesen
	$q = isset($_GET["q"]);
	$f = isset($_GET["f"]);
	$e = isset($_GET["e"]);

	//Datenbankabfrage 
	include('./odbc_connect.inc'); 
	$keine = array("&", "Ä", "Ü", "Ö", "ß", "ä", "ü", "ö", "`", "'", ",", ":", ";", "´","€");
	$dafuer = array("+", "Ae", "Ue", "Oe", "ss", "ae", "ue", "oe", " ", " ", " "," ", " "," ","Euro");
	$keine1 = array("&", "Ä", "Ü", "Ö", "ß", "ä", "ü", "ö", "`", "'", ":", ";", "´","€");
	$dafuer1 = array("+", "Ae", "Ue", "Oe", "ss", "ae", "ue", "oe", " ", " "," ", " "," ","Euro");
	$sqlstreet = 	"Select mas.[House] AS 'Haus',
							mas.[Address] AS 'Address'
					FROM [01_GBH"."$"."Unit Master Data] AS mas
						INNER JOIN [01_GBH"."$"."RE Object] as obj
						ON mas.[Object No_] = obj.No_
					WHERE obj.[Management End Date] = '1753-01-01 00:00:00.000' AND obj.No_ = '".$q."'
					GROUP BY mas.[House], mas.[Address]
					Order BY mas.[House] ASC";
	$cur1 = odbc_exec($cnx, $sqlstreet);
	
	//Erstelle XML-Datei
	$strXML .= '<selectChoice>';
	$strXML .= 		'<selectElement>';
	$strXML .=			'<formName>'. $f .'</formName>';
	$strXML .=			'<formElem>'. $e .'</formElem>';
	$strXML .= 		'</selectElement>';
							while($row1 = odbc_fetch_row($cur1)){ 
	$strXML .= 					'<entry>';
	$strXML .= 						'<optionText>'; $strXML .= str_replace($keine, $dafuer, odbc_result($cur1,"Address")); $strXML .= '</optionText>';
	$strXML .= 						'<optionText>'; $strXML .= str_replace($keine, $dafuer, odbc_result($cur1,"Haus")); $strXML .= '</optionText>';
	$strXML .= 					'</entry>';
							}								
	$strXML .=	'</selectChoice>';
	echo $strXML;
?>

und hier die func.js
Code:
function showStreet(oElem,oTarget){
	var strValue = oElem.options[oElem.selectedIndex].value;	
	var url ="getstreet.php?q=" + strValue + "&f=" + oTarget.form.name + "&e=" + oTarget.name;
	//var strPara = "q=" + strValue + "&f=" + oTarget.form.name + "&e=" + oTarget.name;

	xmlHttp=new XMLHttpRequest();
	if (xmlHttp==null) {
		  alert ("Your browser does not support AJAX!");
		  return;
	}
	xmlHttp.onreadystatechange=FillDropDown;
	xmlHttp.open("GET",url,true);
	xmlHttp.send();
	//alert(url); 
	//var loader = new net.ContentLoader(url,FillDropDown,null,"POST",strPara);
}

function FillDropDown() { 
	if (xmlHttp.readyState==4) {
	
		var xmlDoc = this.responseXML.documentElement;
		var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
		var strFName = xSel.childNodes[0].firstChild.nodeValue;
		var strEName = xSel.childNodes[1].firstChild.nodeValue;
		//alert(strEName); 
		//alert(strFName); 
		var objDDL = document.forms[strFName].elements[strEName];
		
		objDDL.options.length = 0;
		
		var xRows = xmlDoc.getelementsByTagName('entry');
		for(var i = 0;i<xRows.length;i++){
			var theText = xRows[i].childNodes[0].firstChild.nodeValue;
			var theValue = xRows[i].childNodes[0].firstChild.nodeValue;
			var option = new Option(theText, theValue);
			try{
				objDDL.add(option,null);
			} catch (e){
				objDDL.add(option,-1);
			}
		}
	}
}

Könnt ihr mir weiterhelfen?
Grüße Tunel
 
Und dir ist hoffentlich auch klar, dass du für SQL-Injection anfällig bist - wenn du mal die Werte richtig einließt.

PS: Ein globales XHR-Objekt ist keine gute Idee - globale Variablen prinzipiell nicht.
 
Zurück
Oben