Ajax এর মাধ্যমে Form Validation এবং Data Submission করা একটি আধুনিক এবং কার্যকর পদ্ধতি, যা ব্যবহারকারীদের ইনপুট ডেটা সার্ভারে পাঠানোর আগে ভ্যালিডেট করে এবং পেজ রিফ্রেশ ছাড়াই রেসপন্স প্রদান করে। এই পদ্ধতিতে, Ajax এবং PHP এর ইন্টিগ্রেশন ব্যবহার করে ক্লায়েন্ট সাইডে ইনপুট ডেটা যাচাই এবং সার্ভার সাইডে ডেটা প্রক্রিয়া করা যায়। নিচে একটি উদাহরণসহ Ajax এর মাধ্যমে ফর্ম ভ্যালিডেশন এবং ডেটা সাবমিশনের পদ্ধতি আলোচনা করা হয়েছে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ajax Form Validation and Submission</title>
</head>
<body>
<h1>Ajax Form Validation and Submission</h1>
<form id="userForm">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<br><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<br><br>
<button type="button" onclick="validateAndSubmit()">Submit</button>
</form>
<div id="response-container">
<!-- রেসপন্স বা ত্রুটি মেসেজ এখানে দেখানো হবে -->
</div>
<script>
function validateAndSubmit() {
// ফর্ম ইনপুট ভ্যালু গুলো সংগ্রহ করা
var name = document.getElementById('name').value;
var email = document.getElementById('email').value;
// ক্লায়েন্ট সাইড ভ্যালিডেশন
if (name === "" || email === "") {
document.getElementById("response-container").innerHTML = "Please fill in all fields.";
return;
}
// ফর্ম ডেটা তৈরি করা
var formData = new FormData();
formData.append("name", name);
formData.append("email", email);
// XMLHttpRequest অবজেক্ট তৈরি করা
var xhr = new XMLHttpRequest();
// POST রিকোয়েস্ট ওপেন করা
xhr.open("POST", "validate_and_submit.php", true);
// রেসপন্স হ্যান্ডলিং সেট করা
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById("response-container").innerHTML = xhr.responseText;
} else if (xhr.readyState === 4) {
// যদি এরর হয়, তাহলে এরর মেসেজ দেখানো
document.getElementById("response-container").innerHTML = "Error submitting the form!";
}
};
// রিকোয়েস্ট পাঠানো
xhr.send(formData);
}
</script>
</body>
</html>
বিস্তারিত ব্যাখ্যা:
<form>
) তৈরি করা হয়েছে যেখানে নাম এবং ইমেইল ইনপুট ফিল্ড রয়েছে।validateAndSubmit()
ফাংশন কল হবে, যা ইনপুট ফিল্ডগুলো ভ্যালিডেট করে Ajax এর মাধ্যমে ফর্ম ডেটা সাবমিট করবে।response-container
নামে একটি <div>
এলিমেন্ট রয়েছে, যেখানে PHP স্ক্রিপ্ট থেকে প্রাপ্ত রেসপন্স বা ত্রুটি মেসেজ দেখানো হবে।<?php
// ফর্ম থেকে ডেটা সংগ্রহ করা
$name = trim($_POST['name']);
$email = trim($_POST['email']);
// ভ্যালিডেশন চেক করা
if (empty($name) || empty($email)) {
echo "Both fields are required.";
exit();
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Invalid email format.";
exit();
}
// ডাটাবেস কানেকশন সেটআপ
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
$conn = new mysqli($servername, $username, $password, $dbname);
// কানেকশন চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// SQL কুয়েরি তৈরি করা
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
if ($stmt->execute()) {
echo "User data submitted successfully!";
} else {
echo "Error: " . $stmt->error;
}
// কানেকশন এবং স্টেটমেন্ট বন্ধ করা
$stmt->close();
$conn->close();
?>
বিস্তারিত ব্যাখ্যা:
$_POST
ব্যবহার করে ফর্ম ডেটা সংগ্রহ করা হয়েছে এবং ট্রিম করে পরিষ্কার করা হয়েছে।INSERT INTO
কুয়েরি ব্যবহার করা হয়েছে।ডাটাবেসের নাম test_db
এবং টেবিলের নাম users
। টেবিলের একটি সিম্পল স্ট্রাকচার:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
validateAndSubmit()
ফাংশন কল হয়।validate_and_submit.php
এ।response-container
ডিভে ইনজেক্ট করা হয়।xhr.onreadystatechange
এ চেক করা হয়েছে যে রিকোয়েস্ট সফল হয়েছে কিনা (xhr.status === 200
)।আরও দেখুন...