Ajax এবং PHP এর মাধ্যমে ডাটাবেসে কুয়েরি করা একটি শক্তিশালী এবং প্রয়োজনীয় পদ্ধতি, যা ওয়েব অ্যাপ্লিকেশনকে আরও ডায়নামিক এবং ইন্টারেক্টিভ করে তোলে। এই পদ্ধতিতে, Ajax রিকোয়েস্টের মাধ্যমে ক্লায়েন্ট সাইড থেকে PHP স্ক্রিপ্টে ডেটা পাঠানো হয়, এবং PHP সেই ডেটার ভিত্তিতে ডাটাবেসে কুয়েরি চালায়। এরপর, কুয়েরির ফলাফল Ajax এর মাধ্যমে ক্লায়েন্ট সাইডে পাঠানো হয় এবং UI-তে প্রদর্শিত হয়।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Query with Ajax</title>
</head>
<body>
<h1>Search Employee</h1>
<form id="searchForm">
<label for="name">Enter Employee Name:</label>
<input type="text" id="name" name="name" required>
<button type="button" onclick="searchEmployee()">Search</button>
</form>
<div id="result-container">
<!-- রেসপন্স বা ত্রুটি মেসেজ এখানে দেখানো হবে -->
</div>
<script>
function searchEmployee() {
var name = document.getElementById('name').value;
// XMLHttpRequest অবজেক্ট তৈরি করা
var xhr = new XMLHttpRequest();
// POST রিকোয়েস্ট ওপেন করা
xhr.open("POST", "search_employee.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// রেসপন্স হ্যান্ডলিং সেট করা
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
document.getElementById("result-container").innerHTML = xhr.responseText;
} else {
document.getElementById("result-container").innerHTML = "Error fetching data.";
}
}
};
// ত্রুটি হ্যান্ডলিংয়ের জন্য onerror ইভেন্ট হ্যান্ডলার সেট করা
xhr.onerror = function() {
document.getElementById("result-container").innerHTML = "Network error occurred. Please try again.";
};
// রিকোয়েস্ট পাঠানো
xhr.send("name=" + encodeURIComponent(name));
}
</script>
</body>
</html>
বিস্তারিত ব্যাখ্যা:
<form>
) তৈরি করা হয়েছে, যেখানে ইউজার একটি এমপ্লয়ির নাম প্রবেশ করতে পারে। "Search" বোতামে ক্লিক করলে searchEmployee()
ফাংশন কল হবে, যা Ajax POST রিকোয়েস্টের মাধ্যমে PHP স্ক্রিপ্টে ডেটা পাঠাবে।result-container
নামে একটি <div>
এলিমেন্ট রয়েছে, যেখানে PHP স্ক্রিপ্ট থেকে প্রাপ্ত ডেটা বা ত্রুটি মেসেজ দেখানো হবে।<?php
// ফর্ম থেকে ডেটা সংগ্রহ করা
$name = trim($_POST['name']);
// ভ্যালিডেশন চেক করা
if (empty($name)) {
http_response_code(400); // Bad Request
echo "Please enter a name.";
exit();
}
// ডাটাবেস কানেকশন সেটআপ
$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 "Database connection failed.";
exit();
}
// SQL কুয়েরি
$sql = "SELECT name, email, department FROM employees WHERE name LIKE ?";
$stmt = $conn->prepare($sql);
$searchTerm = "%" . $name . "%";
$stmt->bind_param("s", $searchTerm);
$stmt->execute();
$result = $stmt->get_result();
// ডেটা রেসপন্স তৈরি করা
if ($result->num_rows > 0) {
echo "<h2>Search Results:</h2><ul>";
while ($row = $result->fetch_assoc()) {
echo "<li>Name: " . $row['name'] . ", Email: " . $row['email'] . ", Department: " . $row['department'] . "</li>";
}
echo "</ul>";
} else {
echo "No employees found with the name: " . htmlspecialchars($name);
}
// কানেকশন বন্ধ করা
$stmt->close();
$conn->close();
?>
বিস্তারিত ব্যাখ্যা:
$_POST
দিয়ে ডেটা সংগ্রহ করা হয়েছে এবং trim()
ফাংশন দিয়ে ইনপুট পরিষ্কার করা হয়েছে।400
(Bad Request) রিটার্ন করা হয়েছে।LIKE
অপারেটর ব্যবহার করে SQL কুয়েরি তৈরি করা হয়েছে, যা ইউজারের ইনপুট অনুযায়ী নাম মিলিয়ে ডেটা ফেচ করে।prepare()
মেথড ব্যবহার করে কুয়েরি প্রিপেয়ার করা হয়েছে এবং bind_param()
দিয়ে প্যারামিটার বাউন্ড করা হয়েছে।ডাটাবেসের নাম company_db
এবং টেবিলের নাম employees
। টেবিলের একটি সিম্পল স্ট্রাকচার:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
department VARCHAR(100) NOT NULL
);
searchEmployee()
ফাংশন কল হয়।search_employee.php
এ, যেখানে ব্যবহারকারীর ইনপুট পাঠানো হয়।result-container
ডিভে ইনজেক্ট করা হয়।Read more