هل استخدمت الكود السابق؟ سأفترض ذلك، ستحتاج إلى إضافة شرط يتحقق من أن حقل البحث ليس فارغًا وعدد أحرفه 3 أو أكثر وبالطبع تستطيع تغيير الرقم كما تريد.
وتتوفر دالة mb_strlen() وهي دالة مُدمجة في PHP لحساب طول النص أي عدد الأحرف وتحسب عدد البايتات وليس عدد الأحرف الحقيقية عند استخدام ترميزات متعددة البايت مثل UTF-8 وهو الترميز الخاص باللغة العربية لذا سنستخدمها.
وللعلم التحقق يتم على السيرفر، والأفضل إضافة تحقق من خلال الجافاسكربت أيضًا داخل الصفحة لمنع الإرسال قبل التحقق من الإدخال.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("فشل الاتصال: " . $conn->connect_error);
}
$conn->set_charset("utf8");
if (isset($_POST['search'])) {
$search_term = trim($_POST['search_term']);
if (empty($search_term)) {
$error = "يرجى إدخال كلمة للبحث!";
} elseif (mb_strlen($search_term, "UTF-8") < 3) {
$error = "كلمة البحث يجب أن تكون 3 أحرف على الأقل!";
} else {
$sql = "SELECT email FROM users WHERE name LIKE ?";
$stmt = $conn->prepare($sql);
$like_term = "%" . $search_term . "%";
$stmt->bind_param("s", $like_term);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$results[] = $row['email'];
}
} else {
$error = "لا توجد نتائج مطابقة.";
}
$stmt->close();
}
}
$conn->close();
?>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<title>البحث في قاعدة البيانات</title>
<script>
function validateForm() {
var searchTerm = document.getElementById('search_term').value.trim();
if (searchTerm.length < 3) {
alert('يجب إدخال 3 أحرف على الأقل للبحث.');
return false;
}
return true;
}
</script>
</head>
<body>
<h2>البحث في قاعدة البيانات</h2>
<form method="POST" action="" onsubmit="return validateForm();">
<label for="search_term">أدخل اسم المستخدم للبحث:</label>
<input type="text" id="search_term" name="search_term" required>
<button type="submit" name="search">بحث</button>
</form>
<?php
if (isset($error)) {
echo "<p style='color:red;'>$error</p>";
}
if (isset($results) && !empty($results)) {
foreach ($results as $email) {
echo "البريد الإلكتروني: " . htmlspecialchars($email) . "<br>";
}
}
?>
</body>
</html>