PHP - AJAX と MySQL
AJAX はデータベースと対話的に通信するために使用できます。
AJAX データベースの例
以下の例では、WebページがAJAXを介してデータベースから情報を読み取る方法を示します。
このチュートリアルで使用する Websites テーブルの SQL ファイル:websites.sql。
例
対応するオプションを選択すると、ユーザー情報がここに表示されます……
例の説明 - MySQL データベース
上記の例で使用したデータベーステーブルは次のとおりです:
mysql> select * from websites; +----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | サンプル | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | +----+--------------+---------------------------+-------+---------+ 5 rows in set (0.01 sec)
例の説明 - HTML ページ
ユーザーが上のドロップダウンリストでユーザーを選択すると、"showSite()" という関数が実行されます。この関数は "onchange" イベントによってトリガーされます:
test.html ファイルコード:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>サンプル(example.com)</title>
<script>
function showSite(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 (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getsite_mysql.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showSite(this.value)">
<option value="">ウェブサイトを選択:</option>
<option value="1">Google</option>
<option value="2">淘宝</option>
<option value="3">サンプル</option>
<option value="4">微博</option>
<option value="5">Facebook</option>
</select>
</form>
<br>
<div id="txtHint"><b>ウェブサイト情報はここに表示されます……</b></div>
</body>
</html>
showSite() 関数は以下の手順を実行します:
- ウェブサイトが選択されているか確認
- XMLHttpRequest オブジェクトを作成
- サーバーの応答準備完了時に実行する関数を作成
- サーバー上のファイルにリクエストを送信
- URL の末尾に追加されたパラメータ(q)(ドロップダウンリストの内容を含む)に注意してください
PHP ファイル
上記の JavaScript から呼び出されるサーバーページは、"getsite_mysql.php" という名前の PHP ファイルです。
"getsite_mysql.php" 内のソースコードは MySQL データベースに対するクエリを実行し、結果を HTML テーブルで返します:
getsite_mysql.php ファイルコード:
$q = isset($_GET["q"]) ? intval($_GET["q"]) : '';
if(empty($q)) {
echo 'ウェブサイトを選択してください';
exit;
}
$con = mysqli_connect('localhost','root','123456');
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
//データベースを選択
mysqli_select_db($con,"test");
//エンコーディングを設定し、中国語の文字化けを防ぎます
mysqli_set_charset($con, "utf8");
$sql="SELECT * FROM Websites WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table border='1'>
<tr>
<th>ID</th>
<th>网站名</th>
<th>网站 URL</th>
<th>Alexa 排名</th>
<th>国家</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['url'] . "</td>";
echo "<td>" . $row['alexa'] . "</td>";
echo "<td>" . $row['country'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
説明:クエリが JavaScript から PHP ファイルに送信されると、次のことが起こります:
- PHP は MySQL データベースへの接続を開きます
- 選択されたユーザーを見つけます
- HTML テーブルを作成し、データを入力して、"txtHint" プレースホルダーに送り返します