PHP - AJAX ve MySQL
AJAX, bir veritabanı ile etkileşimli iletişim için kullanılabilir.
AJAX Veritabanı Örneği
Aşağıdaki örnek, bir web sayfasının AJAX ile bir veritabanından nasıl bilgi alabileceğini gösterecektir:
Örnek
Örnek Açıklama - MySQL Veritabanı
Yukarıdaki örnekte kullandığımız veritabanı tablosu şuna benzer:
id | FirstName | LastName | Age | Hometown | Job |
---|---|---|---|---|---|
1 | Peter | Griffin | 41 | Quahog | Brewery |
2 | Lois | Griffin | 40 | Newport | Piano Teacher |
3 | Joseph | Swanson | 39 | Quahog | Police Officer |
4 | Glenn | Quagmire | 41 | Quahog | Pilot |
Örnek Açıklama
Yukarıdaki örnekte, bir kullanıcı yukarıdaki açılır listeden bir kişiyi seçtiğinde, "showUser()" adlı bir işlev yürütülür.
İşlev, onchange olayı tarafından tetiklenir.
İşte HTML kodu:
Örnek
<html>
<head>
<script>
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Joseph Swanson</option>
<option value="4">Glenn Quagmire</option>
</select>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here...</b></div>
</body>
</html>
Kod açıklaması:
İlk olarak, kişinin seçili olup olmadığını kontrol edin. Hiç kimse seçilmemişse (str == ""), txtHint içeriğini temizleyin ve işlevden çıkın. Bir kişi seçilirse aşağıdakileri yapın:
- Bir XMLHttpRequest nesnesi oluşturun
- Sunucu yanıtı hazır olduğunda yürütülecek işlevi oluşturun
- İsteği sunucudaki bir dosyaya gönderin
- URL'ye bir parametrenin (q) eklendiğine dikkat edin (açılır listenin içeriğiyle birlikte)
PHP Dosyası
Yukarıdaki JavaScript tarafından çağrılan sunucudaki sayfa, "getuser.php" adlı bir PHP dosyasıdır.
"getuser.php" içindeki kaynak kod, MySQL veritabanına karşı bir sorgu çalıştırır ve sonucu bir HTML tablosunda döndürür:
<!DOCTYPE html>
<html>
<head>
<style>
table {
width: 100%;
border-collapse: collapse;
}
table, td, th {
border: 1px solid black;
padding: 5px;
}
th {text-align: left;}
</style>
</head>
<body>
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','peter','abc123','my_db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>
Açıklama: Sorgu JavaScript'ten PHP dosyasına gönderildiğinde aşağıdakiler gerçekleşir:
- PHP bir MySQL sunucusuna bağlantı açar
- doğru kişi bulundu
- Bir HTML tablosu oluşturulur, verilerle doldurulur ve "txtHint" yer tutucusuna geri gönderilir