PHPとAJAX MySQL データベースインスタンス

AJAX 可用来与数据库进行交互式通信。

AJAX 数据库实例

在下面的 AJAX 实例中,我们将演示网页如何使用 AJAX 技术从 MySQL 数据库中读取信息。

在下拉列表中选择一个客户


此处将列出客户信息。

这个应用程序由四个元素组成:

  • MySQL 数据库
  • 一张简单的 HTML 表单
  • JavaScript
  • PHP 页面

数据库

在本例中使用的数据库看起来类似这样:

id 客户ID 公司名称 联系人姓名 地址 城市 邮政编码 国家
1 阿里巴巴 阿里巴巴集团 马云 ...... 杭州 310002 中国
2 APPLE 苹果公司 蒂姆·库克 ...... 库比蒂诺 95014 USA
3 百度 百度公司 李彦宏 ...... 北京 100080 中国
4 Canon Canon USA Inc. 内田純二 ...... ニューヨーク 11042 USA

例の説明

上記の例では、ユーザーが上記のドロップダウンリストからお客様を選択すると、showUser()と呼ばれる関数が実行されます。

この関数はonchangeイベントで呼び出されます。

以下はHTMLコードです:

<!doctype html>
<html>
<head>
<script>
function showUser(str) {
  if (str=="") {
    document.getElementById("txtHint").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {
    // IE7+, Firefox, Chrome, Opera, Safari用のコード
    xmlhttp=new XMLHttpRequest();
  } else { // 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」プレースホルダーに送信します。