ugrás a tartalomhoz

Ajax-PHP-MYSQL

Pisti20 · 2010. Aug. 2. (H), 13.46
Hali, van egy adatbázisom, abban egy tábla location, ebben va country, city mezők, egymás mellett. Minden városhoz az országa kerül be, így egy ország annyiszorszerepel ahány városa van, de nem ez a lényeg.

Szeretném ajaxal megoldani hogy mikor elhagyták a country selector elemet, annak az értékével keresse meg az összes várost adatbázisból, és alatta jelenítse meg a városokat ugyan így select elemen keresztül, de valamiért nemmegy.

PHP KÓD:

<tr><td class="regtd">Country:</td><td><select class="reg" name="country" id="country"  onblur="getcity(this.value)">
<?php
include('database.php');
$select=mysql_query("SELECT * FROM location",$con);

$tar="";

while ($rows=mysql_fetch_array($select)){
	if ($rows[country]!=$tar){
	print("<option>".$rows[country]."</option>");
	$tar=$rows[country];}
}
?>
</select></td><td></td></tr>
Ajax kód:

function getHTTPObject(){
	if (window.ActiveXObject){ 
		return new ActiveXObject("Microsoft.XMLHTTP");} //IE
	else if (window.XMLHttpRequest){ 
		return new XMLHttpRequest();}
	else {
		alert("Your browser does not support AJAX.");
		return null;}
}
 
// Change the value of the city field
function setOutput(){
	if(httpObject.readyState == 4){
		$("#city").load('city.php'); //a city id, a country selector alatti <td> elem.
	}
 
}

// Implement business logic
function getcity(ertek){
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET", "city.php?country="+ertek, true);
httpObject.send(null);
httpObject.onreadystatechange = setOutput;
}
}
 
var httpObject = null;
A cityben csak enyi van:

<?php
$citys=mysql_query("SELECT city FROM location WHERE country='$_GET[country]' ORDER BY city",$con);
while($rows2=mysql_fetch_array($citys)){
print("<option>".$rows2[city]."</option>");
}
?>

Köszi a választ

 
1

jQuery

Poetro · 2010. Aug. 2. (H), 21.40
Most nem teljesen értem, hogy mit is csinálsz. Ha jQuery-t használsz, akkor miért használsz külön saját XHR-t, ha meg nem akkor nem értem mi van a setOutput-ban. Ahogyan én csinálnám jQuery-vel.
<select class="reg" name="country" id="country">
<?php  
include('database.php');  
$select=mysql_query("SELECT * FROM location",$con);  
while ($rows=mysql_fetch_array($select)) {
  if ($rows[country]!=$tar) {  
    print "<option>".$rows[country]."</option>";  
  }  
}  
?>  
</select>
$('#country').change(function () {
  $('#city').load('city.php', 'country='. $(this).val());
});