PHP 和 AJAX MySQL數據庫實例-6.5PHP和AJAX

閱讀 ?·? 發布日期 2019-06-29 08:31 ?·? admin

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”占位符