PHP 和 AJAX MySQL數(shù)據(jù)庫(kù)實(shí)例-6.5PHP和AJAX

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

AJAX 可用來(lái)與數(shù)據(jù)庫(kù)進(jìn)行交互式通信。

AJAX 數(shù)據(jù)庫(kù)實(shí)例

在下面的 AJAX 實(shí)例中,我們將演示網(wǎng)頁(yè)如何使用 AJAX 技術(shù)從 MySQL 數(shù)據(jù)庫(kù)中讀取信息。

在下拉列表中選擇一個(gè)客戶

 
 

此處將列出客戶信息。

這個(gè)應(yīng)用程序由四個(gè)元素組成:

  • MySQL 數(shù)據(jù)庫(kù)
  • 一張簡(jiǎn)單的 HTML 表單
  • JavaScript
  • PHP 頁(yè)面

數(shù)據(jù)庫(kù)

將在本例中使用的數(shù)據(jù)庫(kù)看起來(lái)類似這樣:

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

例子解釋

在上面的例子中,當(dāng)用戶在上面的下拉列表中選擇客戶時(shí),會(huì)執(zhí)行名為“showUser()”的函數(shù)。

該函數(shù)由 onchange 事件觸發(fā)。

這是 HTML 代碼:

實(shí)例

<!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="">請(qǐng)選擇一個(gè)客戶:</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>

運(yùn)行實(shí)例

代碼解釋:

首先,檢查是否選擇了客戶。如果未選擇任何客戶(str ==“”),則清除 txtHint 的內(nèi)容并退出該函數(shù)。如果選擇了某個(gè)客戶,則執(zhí)行以下操作:

  • 創(chuàng)建 XMLHttpRequest 對(duì)象
  • 創(chuàng)建服務(wù)器響應(yīng)就緒時(shí)要執(zhí)行的函數(shù)
  • 將請(qǐng)求發(fā)送到服務(wù)器上的文件
  • 請(qǐng)注意,參數(shù)(q)被添加到 URL(帶有下拉列表的內(nèi)容)

PHP 文件

上面的 JavaScript 調(diào)用的服務(wù)器上的頁(yè)面是一個(gè)名為“getuser.php”的 PHP 文件。

“getuser.php”中的源代碼對(duì) MySQL 數(shù)據(jù)庫(kù)運(yùn)行查詢,并在 HTML 表中返回結(jié)果:

<?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);
?>

解釋:當(dāng)查詢從 JavaScript 發(fā)送到 PHP 文件時(shí),會(huì)發(fā)生以下情況:

  • PHP 打開與 MySQL 服務(wù)器的連接
  • 找到了正確的客戶
  • 創(chuàng)建一個(gè) HTML 表,填充數(shù)據(jù),并發(fā)送回“txtHint”占位符