PHP ve AJAX MySQL Veritabanı Örneği
- Önceki Sayfa AJAX XML
- Sonraki Sayfa AJAX responseXML
AJAX 可用来与数据库进行交互式通信。
AJAX 数据库实例
在下面的 AJAX 实例中,我们将演示网页如何使用 AJAX 技术从 MySQL 数据库中读取信息。
在下拉列表中选择一个客户
这个应用程序由四个元素组成:
- MySQL 数据库
- 一张简单的 HTML 表单
- JavaScript
- PHP 页面
数据库
将在本例中使用的数据库看起来类似这样:
id | CustomerID | CompanyName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|---|
1 | Alibaba | Alibaba Group | Ma Yun | ...... | Hangzhou | 310002 | Çin |
2 | APPLE | Apple Inc. | Tim Cook | ...... | Cupertino | 95014 | USA |
3 | BAIDU | BAIDU Inc. | Li YanHong | ...... | Beijing | 100080 | Çin |
4 | Canon | Canon USA Inc. | Tsuneji Uchida | ...... | New York | 11042 | USA |
Örnek Açıklaması
Yukarıdaki örnekte, kullanıcı yukarıdaki açılır listeden bir müşteri seçtiğinde, 'showUser()' adlı fonksiyon çalışır.
Bu fonksiyon onchange olayı tarafından tetiklenir。
Bu HTML kodudur:
Örnek
<!doctype html> <html> <head> <script> function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementById("txtHint").innerHTML=this.responseText; } } xmlhttp.open("GET","/demo/getcustomer.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <form> <select name="users" onchange="showUser(this.value)"> <option value="">Lütfen bir müşteri seçin:</option> <option value="1">Alibaba</option> <option value="2">APPLE</option> <option value="3">BAIDU</option> <option value="4">Canon</option> <option value="5">Google</option> <option value="6">HUAWEI</option> <option value="7">Microsoft</option> <option value="8">Nokia</option> <option value="9">SONY</option> <option value="10">Tencent</option> </select> </form> <br> <div id="txtHint"><b>Customer bilgileri burada listelenecektir.</b></div> </body> </html>
Kod açıklaması:
Öncelikle, bir müşteri seçildiğini kontrol edin. Eğer hiçbir müşteri seçilmediyse (str == ""), txtHint içeriğini temizleyin ve fonksiyondan çıkın. Bir müşteri seçildiyse, aşağıdaki adımları gerçekleştirin:
- XMLHttpRequest nesnesi oluşturun
- Sunucu yanıtı hazır olduğunda çalıştırılacak fonksiyon oluşturun
- İstek sunucudaki dosyaya gönderilir
- Lütfen dikkat edin, parametre (q) URL'ye (aşağıdakı açılır listedeki içerik) eklenmiştir.
PHP dosyası
Yukarıdaki JavaScript çağrısı sunucudaki adı “getuser.php” olan bir PHP dosyasıdır.
“getuser.php” dosyasındaki kaynak kod MySQL veritabanına sorgu çalıştırır ve HTML tablosunda sonuçları döndürür:
<?php $q = intval($_GET['q']); $con = mysqli_connect('MyServer','MyUser','MyPassword','Customers'); if (!$con) { die('Could not connect: ' . mysqli_error($con)); } $sql="SELECT * FROM customerslist WHERE id = '".$q."'"; $result = mysqli_query($con,$sql); echo "<table>"; while($row = mysqli_fetch_array($result)) { echo "<tr><th>CustomerID</th><td>" . $row['CustomerID'] . "</td></tr>"; echo "<tr><th>Şirket Adı</th><td>" . $row['CompanyName'] . "</td></tr>"; echo "<tr><th>İletişim Adı</th><td>" . $row['ContactName'] . "</td></tr>"; echo "<tr><th>Adres</th><td>" . $row['Address'] . "</td></tr>"; echo "<tr><th>Şehir</th><td>" . $row['City'] . "</td></tr>"; echo "<tr><th>Posta Kodu</th><td>" . $row['PostalCode'] . "</td></tr>"; echo "<tr><th>Ülke</th><td>" . $row['Country'] . "</td></tr>"; } echo "</table>"; mysqli_close($con); ?>
Açıklama: JavaScript'ten PHP dosyasına sorgu gönderildiğinde aşağıdaki durumlar ortaya çıkar:
- PHP ile MySQL sunucusu ile bağlantı aç
- Doğru müşteri bulundu
- Bir HTML tablosu oluşturun, verileri doldurun ve "txtHint" yer tutucusuna geri gönderin
- Önceki Sayfa AJAX XML
- Sonraki Sayfa AJAX responseXML