Kişisel olarak XMLHTTP yi
XML yerine JSON ile kullanıyorum. Hem
JavaScript tarafında
XML ile uğraşmak zorunda kalmıyorum hem de
server tarafında JSON datası üretmek daha kolay geliyor.
Veritabanında bir sehir ve bir ilce tablomuz olduğunu varsayıyorum.
Sehir.
PHP dosyamız şu şekilde olsun :
<?
//Starting MySQL connection
$conn = mysql_connect("localhost", "username", "sifre");
mysql_select_db("veritabani") or die(mysql_error());
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Sehirler ve ilceler</TITLE>
<script LANGUAGE="JavaScript">
<!--
function ilcegetir(ilceID){
ilceID = parseInt(ilceID);
if (ilceID != 0){
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest(); // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera
} else if(window.ActiveXObject) {
xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); // internet Explorer
} else {
return false;
}
xmlhttp.open("GET", "http://delizeka.com/files/ilcegetir.PHP?ID=" + ilceID, true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4) {
// JSON olarak ilceleri aliyoruz.
var obje = eval('(' + xmlhttp.responseText + ')');
ilcelerSelectBox = document.getElementById('ilceler');
//eski optionlari remove ediyoruz
for (i=0;i<ilcelerSelectBox.options.length;i++){
ilcelerSelectBox.remove(i);
}
//yeni optionlari ekliyoruz
for(i=0;i<obje.ilceler.length;i++){
var opsiyon = new Option(obje.ilceler[i].ilceadi, obje.ilceler[i].ilceid);
ilcelerSelectBox.options[i] = opsiyon;
}
}
}
xmlhttp.send(null);
}
}
//-->
</script>
</HEAD>
<BODY>
<select name="sehirler" onchange="ilcegetir(this.options[this.selectedIndex].value)">
<option value="0">---- Seciniz ----</option>
<?
$result = mysql_query("select * from sehirler");
while($data = mysql_fetch_array($result)){
?>
<option value="<? echo $data['sehirID']; ?>"><? echo $data['sehirAdi']; ?></option>
<?
}
?>
</select>
<select name="ilceler" id="ilceler">
</select>
<br>
</BODY>
</HTML>
ve XMLHTTP ile isteyeceğimiz JSON üreterek ilçeleri verecek ilcegetir.
PHP dosyamız da şu şekilde olsun :
<?
//Starting MySQL connection
$conn = mysql_connect("localhost", "username", "sifre");
mysql_select_db("veritabani") or die(mysql_error());
$result = mysql_query("select * from ilceler where sehirID = " . $_GET['ID']);
#JSON olustur
$json_text .= "{\n";
$json_text .= "\"ilceler\": [ \n";
$json_text2 = "";
while($ilceler = mysql_fetch_array($result)){
$json_text2 .= "{ \"ilceid\": \"" . $ilceler['ilceID'] . "\", \"ilceadi\": \"" . $ilceler['ilceAdi'] . "\" },";
}
$json_text2 = substr($json_text2, 0, strlen($json_text2)-1);
$json_text .= $json_text2;
$json_text .= " ]\n";
$json_text .= " }\n";
#Json i goster
print $json_text;
?>
Böylece istediğin gibi bir sistem elde etmiş oluyoruz. JSON,
XML e göre çok daha kolay kullanılabilen bir
veri gönderme şekli.
Google da JSON olarak aratırsan syntax i hakkında bilgiler bulabilirsin. İstersen
XML e de çevirebilirsin, ama bu kez sehir.
PHP de alacağın
XML i parse etmek gerekecek.
Bu örneği benim sitenin altına koydum, ordan da test edebilirsin:
http://delizeka.com/files/sehir.php
Kolay gelsin.