پایگاه داده (AJAX Database)
آژاکس (AJAX) یعنی گرفتن داده بدون رفرش. اینجا از پایگاه داده حرف می زنیم. مثل انتخاب دانش آموز و دیدن جزئیاتش همان لحظه.
نمونه AJAX پایگاه داده
کاربر مشتری را از فهرست انتخاب می کند. سپس جاوااسکریپت (JavaScript) تابعی به نام showCustomer را صدا می زند و با سرور حرف می زند.
<script>
function showCustomer(str) {
var xhttp;
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xhttp.open("GET", "getcustomer.php?q=" + str, true);
xhttp.send();
}
<\/script>
کار با AJAX پایگاه داده: گام ها
- کاربر یک مشتری انتخاب می کند.
- رویداد onchange تابع را اجرا می کند.
- اگر انتخاب خالی بود، خروجی پاک می شود.
- وگرنه یک XMLHttpRequest ساخته می شود.
- درخواست GET به getcustomer.php فرستاده می شود.
- اگر status برابر 200 بود، جدول نمایش داده می شود.
نکته: پارامتر q همان شناسه مشتری است. مثل کدی که روی کارت دانش آموز چاپ شده.
صفحه سرور PHP
فایل getcustomer.php به پایگاه داده وصل می شود. سپس با پارامتر q یک پرس وجو (Query) اجرا می کند و نتیجه را به صورت جدول برمی گرداند.
<?php
$mysqli = new mysqli("servername", "username", "password", "dbname");
if ($mysqli->connect_error) {
exit('Could not connect');
}
$sql = "SELECT customerid, companyname, contactname, address, city, postalcode, country FROM customers WHERE customerid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $_GET['q']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($cid, $cname, $name, $adr, $city, $pcode, $country);
$stmt->fetch();
$stmt->close();
echo "<table>";
echo "<tr>";
echo "<th>CustomerID</th>";
echo "<td>" . $cid . "</td>";
echo "<th>CompanyName</th>";
echo "<td>" . $cname . "</td>";
echo "<th>ContactName</th>";
echo "<td>" . $name . "</td>";
echo "<th>Address</th>";
echo "<td>" . $adr . "</td>";
echo "<th>City</th>";
echo "<td>" . $city . "</td>";
echo "<th>PostalCode</th>";
echo "<td>" . $pcode . "</td>";
echo "<th>Country</th>";
echo "<td>" . $country . "</td>";
echo "</tr>";
echo "</table>";
?>
پیوندهای داخلی
برای درک بهتر، بخش AJAX با ASP و AJAX با PHP را هم ببین. همچنین از پایگاه داده (AJAX Database) به عنوان مرجع صفحه استفاده کن.
جمع بندی سریع
- در dropdown انتخاب کن و رویداد onchange اجرا می شود.
- XMLHttpRequest درخواست GET می فرستد.
- PHP از پایگاه داده می خواند و جدول می سازد.
- status 200 یعنی پاسخ معتبر است.