View Single Post
Sponsorlu Bağlantılar
Zoque.Forum
Advertisement
Old 18.01.2007   #4 (permalink)
delizeka
 
delizeka's Avatar
 
Üyelik Tarihi: 22.04.2003
Yer: İstanbul
Yaş: 26
Mesaj: 112
Re: birbirine bağlı form elemanları?

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 :

PHP Code:
<?
//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 :

PHP Code:
<?
//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_text20strlen($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.
__________________
http://www.kimindir.com - Alan adı sorgulama (whois) servisi... [v0.4 beta]
delizeka şu an çevrimdışı   Mesajdan alıntı yaparak yeni bir cevap ekleyin