Ajax এর মাধ্যমে ডাটাবেস থেকে ডেটা রিকোয়েস্ট করা একটি সাধারণ এবং কার্যকরী পদ্ধতি, যা ওয়েব অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ এবং রেসপন্সিভ করে তোলে। Ajax এর মাধ্যমে একটি ক্লায়েন্ট-সাইড রিকোয়েস্ট সার্ভারে পাঠানো হয়, যেখানে PHP স্ক্রিপ্ট ডাটাবেস থেকে ডেটা ফেচ করে এবং রেসপন্স হিসাবে JSON বা HTML আউটপুট করে পাঠায়। ক্লায়েন্ট সাইডে সেই ডেটা প্রসেস করে ডায়নামিকভাবে UI-তে দেখানো হয়।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ajax Database Request Example</title>
</head>
<body>
<h1>Employee List</h1>
<button onclick="fetchEmployeeData()">Fetch Employees</button>
<div id="employee-container">
<!-- ডেটা এখানে দেখানো হবে -->
</div>
<script>
function fetchEmployeeData() {
// XMLHttpRequest অবজেক্ট তৈরি করা
var xhr = new XMLHttpRequest();
// GET রিকোয়েস্ট ওপেন করা
xhr.open("GET", "fetch_employees.php", true);
// রেসপন্স হ্যান্ডলিং সেট করা
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // রিকোয়েস্ট সম্পূর্ণ হলে
if (xhr.status === 200) { // রিকোয়েস্ট সফল হলে
var data = JSON.parse(xhr.responseText); // JSON ডেটা প্রসেস করা
var output = "<h2>Employees:</h2><ul>";
data.forEach(function(employee) {
output += `<li>${employee.name} - ${employee.email}</li>`;
});
output += "</ul>";
document.getElementById("employee-container").innerHTML = output;
} else {
document.getElementById("employee-container").innerHTML = "Error fetching data.";
}
}
};
// ত্রুটি হ্যান্ডলিংয়ের জন্য onerror ইভেন্ট হ্যান্ডলার সেট করা
xhr.onerror = function() {
document.getElementById("employee-container").innerHTML = "Network error occurred. Please try again.";
};
// রিকোয়েস্ট পাঠানো
xhr.send();
}
</script>
</body>
</html>
বিস্তারিত ব্যাখ্যা:
<h1>
), একটি বোতাম (<button>
), এবং একটি <div>
এলিমেন্ট রয়েছে।fetchEmployeeData()
ফাংশন কল হবে, যা Ajax এর মাধ্যমে fetch_employees.php
ফাইলে একটি GET রিকোয়েস্ট পাঠাবে।employee-container
নামে একটি <div>
এলিমেন্ট রয়েছে, যেখানে PHP স্ক্রিপ্ট থেকে প্রাপ্ত ডেটা বা ত্রুটি মেসেজ দেখানো হবে।<?php
// ডাটাবেস কানেকশন সেটআপ
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";
$conn = new mysqli($servername, $username, $password, $dbname);
// কানেকশন চেক করা
if ($conn->connect_error) {
http_response_code(500); // Internal Server Error
echo json_encode(["error" => "Database connection failed."]);
exit();
}
// SQL কুয়েরি
$sql = "SELECT name, email FROM employees";
$result = $conn->query($sql);
// ডেটা রেসপন্স তৈরি করা
$employees = array();
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$employees[] = $row;
}
}
// JSON ফরম্যাটে হেডার সেট করা
header('Content-Type: application/json');
// JSON ফরম্যাটে ডেটা রিটার্ন করা
echo json_encode($employees);
// ডাটাবেস কানেকশন বন্ধ করা
$conn->close();
?>
বিস্তারিত ব্যাখ্যা:
localhost
এ MySQL সার্ভার কানেক্ট করা হয়েছে।employees
টেবিল থেকে name
এবং email
কলামগুলো ফেচ করা হয়েছে।$employees
অ্যারেতে স্টোর করা হয়েছে।json_encode()
ফাংশন ব্যবহার করে ডেটা JSON ফরম্যাটে কনভার্ট করা হয়েছে এবং PHP এর header('Content-Type: application/json');
দিয়ে JSON হেডার সেট করা হয়েছে।ডাটাবেসের নাম company_db
এবং টেবিলের নাম employees
। টেবিলের একটি সিম্পল স্ট্রাকচার:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
fetchEmployeeData()
ফাংশন কল হয়।fetch_employees.php
এ।