اذهب إلى المحتوى

السؤال

نشر

السلام عليكم الاخوة الكرام

ارغب بالمساعدة في انشاء كود للبحث داخل جدول قاعدة بيانات بشرط ان تظهر البيانات لحقل واحد فقط 

 

Recommended Posts

  • 1
نشر

للبحث داخل جدول قاعدة بيانات مع إظهار حقل واحد فقط بناءً على شرط البحث. سأفترض أنك تستخدم MySQL كقاعدة بيانات. 

<?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 = $_POST['search_term'];

    // استعلام البحث (حماية من SQL Injection باستخدام prepared statements)
    $sql = "SELECT email FROM users WHERE name LIKE ?";
    $stmt = $conn->prepare($sql);
    $search_term = "%" . $search_term . "%"; // إضافة % للبحث الجزئي
    $stmt->bind_param("s", $search_term);
    $stmt->execute();
    $result = $stmt->get_result();

    // عرض النتائج
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "البريد الإلكتروني: " . $row['email'] . "<br>";
        }
    } else {
        echo "لا توجد نتائج مطابقة.";
    }

    $stmt->close();
}

// إغلاق الاتصال
$conn->close();
?>

<!-- نموذج HTML لإدخال البحث -->
<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>البحث في قاعدة البيانات</title>
</head>
<body>
    <h2>البحث في قاعدة البيانات</h2>
    <form method="POST" action="">
        <label for="search_term">أدخل اسم المستخدم للبحث:</label>
        <input type="text" id="search_term" name="search_term" required>
        <button type="submit" name="search">بحث</button>
    </form>
</body>
</html>

هذا الكود كامل بناء على ما تريد.

  • 1
نشر
بتاريخ 1 ساعة قال m_sh:

بارك الله فيك اخي بلال ، لكن بنسبة اذا تم ضغط الزر للبحث يتم جلب كل المعلومات اريد تخصيص البحث بحيث اذا كان صندوق البحث فارغ او بهعدد بسيط من الاحرف لايقبل البحث

هل استخدمت الكود السابق؟ سأفترض ذلك، ستحتاج إلى إضافة شرط يتحقق من أن حقل البحث ليس فارغًا وعدد أحرفه 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>

 

  • 0
نشر
بتاريخ 2 ساعة قال بلال زيادة:

للبحث داخل جدول قاعدة بيانات مع إظهار حقل واحد فقط بناءً على شرط البحث. سأفترض أنك تستخدم MySQL كقاعدة بيانات. 

<?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 = $_POST['search_term'];

    // استعلام البحث (حماية من SQL Injection باستخدام prepared statements)
    $sql = "SELECT email FROM users WHERE name LIKE ?";
    $stmt = $conn->prepare($sql);
    $search_term = "%" . $search_term . "%"; // إضافة % للبحث الجزئي
    $stmt->bind_param("s", $search_term);
    $stmt->execute();
    $result = $stmt->get_result();

    // عرض النتائج
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "البريد الإلكتروني: " . $row['email'] . "<br>";
        }
    } else {
        echo "لا توجد نتائج مطابقة.";
    }

    $stmt->close();
}

// إغلاق الاتصال
$conn->close();
?>

<!-- نموذج HTML لإدخال البحث -->
<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>البحث في قاعدة البيانات</title>
</head>
<body>
    <h2>البحث في قاعدة البيانات</h2>
    <form method="POST" action="">
        <label for="search_term">أدخل اسم المستخدم للبحث:</label>
        <input type="text" id="search_term" name="search_term" required>
        <button type="submit" name="search">بحث</button>
    </form>
</body>
</html>

هذا الكود كامل بناء على ما تريد.

بارك الله فيك اخي بلال ، لكن بنسبة اذا تم ضغط الزر للبحث يتم جلب كل المعلومات اريد تخصيص البحث بحيث اذا كان صندوق البحث فارغ او بهعدد بسيط من الاحرف لايقبل البحث

  • 0
نشر
بتاريخ 7 ساعة قال m_sh:

بارك الله فيك اخي بلال ، لكن بنسبة اذا تم ضغط الزر للبحث يتم جلب كل المعلومات اريد تخصيص البحث بحيث اذا كان صندوق البحث فارغ او بهعدد بسيط من الاحرف لايقبل البحث

لتخصيص البحث بحيث لا يتم تنفيذه إذا كان صندوق البحث فارغًا أو يحتوي على عدد قليل من الأحرف (على سبيل المثال أقل من 3 أحرف)، يمكننا إضافة تحقق إضافي في كود PHP قبل تنفيذ الاستعلام. سأقوم بتعديل الكود ليشمل هذا التحقق. يمكنك استخدام الكود التالي 

<?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']); // إزالة المسافات البيضاء

    // التحقق من أن الحقل ليس فارغًا ويحتوي على 3 أحرف على الأقل
    if (empty($search_term)) {
        echo "يرجى إدخال اسم للبحث.";
    } elseif (strlen($search_term) < 3) {
        echo "يجب أن يحتوي البحث على 3 أحرف على الأقل.";
    } else {
        // استعلام البحث (حماية من SQL Injection باستخدام prepared statements)
        $sql = "SELECT email FROM users WHERE name LIKE ?";
        $stmt = $conn->prepare($sql);
        $search_term = "%" . $search_term . "%"; // إضافة % للبحث الجزئي
        $stmt->bind_param("s", $search_term);
        $stmt->execute();
        $result = $stmt->get_result();

        // عرض النتائج
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                echo "البريد الإلكتروني: " . $row['email'] . "<br>";
            }
        } else {
            echo "لا توجد نتائج مطابقة.";
        }

        $stmt->close();
    }
}

// إغلاق الاتصال
$conn->close();
?>

<!-- نموذج HTML لإدخال البحث -->
<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <title>البحث في قاعدة البيانات</title>
</head>
<body>
    <h2>البحث في قاعدة البيانات</h2>
    <form method="POST" action="">
        <label for="search_term">أدخل اسم المستخدم للبحث:</label>
        <input type="text" id="search_term" name="search_term" required>
        <button type="submit" name="search">بحث</button>
    </form>
</body>
</html>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...