PHP 和 AJAX MySQL 數據庫實例
- 上一頁 AJAX XML
- 下一頁 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 | China |
2 | APPLE | Apple Inc. | Tim Cook | ...... | Cupertino | 95014 | USA |
3 | BAIDU | BAIDU Inc. | Li YanHong | ...... | Beijing | 100080 | China |
4 | Canon | Canon USA Inc. | Tsuneji Uchida | ...... | New York | 11042 | USA |
例子解釋
在上面的例子中,當用戶在上面的下拉列表中選擇客戶時,會執行名為“showUser()”的函數。
該函數由 onchange 事件觸發。
這是 HTML 代碼:
實例
<!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="">請選擇一個客戶:</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>客戶信息將在此處列出。</b></div> </body> </html>
代碼解釋:
首先,檢查是否選擇了客戶。如果未選擇任何客戶(str ==“”),則清除 txtHint 的內容并退出該函數。如果選擇了某個客戶,則執行以下操作:
- 創建 XMLHttpRequest 對象
- 創建服務器響應就緒時要執行的函數
- 將請求發送到服務器上的文件
- 請注意,參數(q)被添加到 URL(帶有下拉列表的內容)
PHP 文件
上面的 JavaScript 調用的服務器上的頁面是一個名為“getuser.php”的 PHP 文件。
“getuser.php”中的源代碼對 MySQL 數據庫運行查詢,并在 HTML 表中返回結果:
<?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>CompanyName</th><td>" . $row['CompanyName'] . "</td></tr>"; echo "<tr><th>ContactName</th><td>" . $row['ContactName'] . "</td></tr>"; echo "<tr><th>Address</th><td>" . $row['Address'] . "</td></tr>"; echo "<tr><th>City</th><td>" . $row['City'] . "</td></tr>"; echo "<tr><th>PostalCode</th><td>" . $row['PostalCode'] . "</td></tr>"; echo "<tr><th>Country</th><td>" . $row['Country'] . "</td></tr>"; } echo "</table>"; mysqli_close($con); ?>
解釋:當查詢從 JavaScript 發送到 PHP 文件時,會發生以下情況:
- PHP 打開與 MySQL 服務器的連接
- 找到了正確的客戶
- 創建一個 HTML 表,填充數據,并發送回“txtHint”占位符
- 上一頁 AJAX XML
- 下一頁 AJAX responseXML