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

السؤال

نشر

لدي نموذج الإشتراك التالي:

<!DOCTYPE html>
<html dir="rtl" lang="ar">

<head>
    <title>تسجيل عضوية جديدة</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css">
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@600&display=swap" rel="stylesheet">
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #f1f1f1;
            font-family: 'Cairo', sans-serif;
            text-align: right;
        }

        .box {
            width: 600px;
            border: 1px solid #ccc;
            background-color: #fff;
            border-radius: 5px;
            margin-top: 36px;
        }
    </style>
</head>

<body>
    <div class="container box">
        <h3 class="text-center mt-3">تسجيل عضوية جديدة</h3><br />
        <div class="form-group">
            <label>إسم المستخدم</label>
            <input type="text" name="username" id="username" class="form-control" autocomplete="off" />
            <br /><br />
            <button type="button" name="register" class="btn btn-info" id="register" disabled>إشترك الآن</button>
            <br />
        </div>
        <br />
        <br />
    </div>
</body>

</html>

يحتوي على حقل لإدخال إسم المُستخدم أريد التأكد من صلاحية إسم المُستخدم الذي يتم إدخاله و عرض رسالة: يجب أن يكون عدد أحرف إسم المستخدم أكبر من 3، و في حالة كان إسم المُستخدم قد تم إستعماله مُسبقاً من طرف مُستخدم آخر أي موجود في جدول المستخدمين يتم عرض رسالة إسم المُستخدم غير متاح و إلا يتم عرض إسم المستخدم متاح على أن تتم عملية التحقق بدون تحديث للصفحة بإستخدام ajax 

Recommended Posts

  • 0
نشر

يُمكنك إضافة عُنصر span تحت حقل الإدخال الخاص بإسم المُستخدم و إعطائه مُعرف لإستعماله في عرض الرسائل:

<span id="availability"></span>

ثم بإستعمال مكتبة jquery مثلا تقوم بالتسمع على حدث blur على حقل الإدخال و تنفيذ دالة مُعالجة للحدث تجلب من خلالها قيمة اسم المستخدم ثم إن كان الطول أكثر من 3 تقوم بعمل طلب من خلال ajax أما إن كان الطول أقل من 3 تعرض رسالة الخطأ التي تريد كما هو موضح أدناه:

$(function() {
  $('#username').on('blur', function() { // الإستماع للحدث blur على حقل الإدخال

    var username = $(this).val(); // جلب القيمة التي أدخلها المُستخدم
    if (username.length > 3) // التحقق من عدد الحروف
      $.ajax({ // ارسال طلب ajax
        url: 'check.php', // إرسال الطلب إلى الصفحة check.php
        method: "POST", // نوع الطلب Post
        data: {
          username: username // إرسال الإسم الذي تم إدخاله
        },
        success: function(data) { // في حالة النجاح
          // سنُرسل عدد السجلات المطابقة لإسم المُستخدم في قاعدة البيانات
          // إذا كان عدد السجلات لا يُساوي 0 يعني أن الإسم غير مُتاح
          // و إلا فإن الإسم مُتاح
          if (data != '0') { 
            $('#availability').html('<span class="text-danger">إسم المُستخدم غير متاح</span>');
            $('#register').attr("disabled", true);
          } else {
            $('#availability').html('<span class="text-success">إسم المستخدم متاح</span>');
            $('#register').attr("disabled", false);
          }
        }
      })
    else{ // عرض رسالة الخطأ الخاصة بعدد الحروف
      $('#register').attr("disabled", true);
      $('#availability').html('<span class="text-danger">يجب أن يكون عدد أحرف إسم المستخدم أكبر من 3</span>');
    }


  });
});

لقد قمنا بإرسال الطلب إلى الصفحة check.php سيكون مُحتوى الملف بهذا الشكل:

<?php
//check.php  
$con = mysqli_connect("localhost", "root", "root", "test_db"); // عملية الإتصال بقاعدة البيانات
if (isset($_POST["username"])) { // التحقق من إرسال إسم المُستخدم في الطلب
  $username = mysqli_real_escape_string($con, $_POST["username"]); // عمل escape لبعض المحارف التي تُسبب أخطاء في الإستعلام إذا وُجدت
  $query = "SELECT username FROM users WHERE username = '" . $username . "'";  // الإستعلام الذي سيتم تنفيذه
  $result = mysqli_query($con, $query); // تنفيذ الإستعلام
  echo mysqli_num_rows($result); // إرجاع عدد السجلات المُطابقة
}

و هذا هو مُحتوى صفحة الإشتراك بالكامل:

<!DOCTYPE html>
<html dir="rtl" lang="ar">

  <head>
    <title>تسجيل عضوية جديدة</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css">
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@600&display=swap" rel="stylesheet">
    <style>
      body {
        margin: 0;
        padding: 0;
        background-color: #f1f1f1;
        font-family: 'Cairo', sans-serif;
        text-align: right;
      }

      .box {
        width: 600px;
        border: 1px solid #ccc;
        background-color: #fff;
        border-radius: 5px;
        margin-top: 36px;
      }
    </style>
  </head>

  <body>
    <div class="container box">
      <h3 class="text-center mt-3">تسجيل عضوية جديدة</h3><br />
      <div class="form-group">
        <label>إسم المستخدم</label>
        <input type="text" name="username" id="username" class="form-control" autocomplete="off" />
        <span id="availability"></span>
        <br /><br />
        <button type="button" name="register" class="btn btn-info" id="register" disabled>إشترك الآن</button>
        <br />
      </div>
      <br />
      <br />
    </div>


    <script>
      $(function() {
        $('#username').on('blur', function() { // الإستماع للحدث blur على حقل الإدخال

          var username = $(this).val(); // جلب القيمة التي أدخلها المُستخدم
          if (username.length > 3) // التحقق من عدد الحروف
            $.ajax({ // ارسال طلب ajax
              url: 'check.php', // إرسال الطلب إلى الصفحة check.php
              method: "POST", // نوع الطلب Post
              data: {
                username: username // إرسال الإسم الذي تم إدخاله
              },
              success: function(data) { // في حالة النجاح
                // سنُرسل عدد السجلات المطابقة لإسم المُستخدم في قاعدة البيانات
                // إذا كان عدد السجلات لا يُساوي 0 يعني أن الإسم غير مُتاح
                // و إلا فإن الإسم مُتاح
                if (data != '0') { 
                  $('#availability').html('<span class="text-danger">إسم المُستخدم غير متاح</span>');
                  $('#register').attr("disabled", true);
                } else {
                  $('#availability').html('<span class="text-success">إسم المستخدم متاح</span>');
                  $('#register').attr("disabled", false);
                }
              }
            })
          else{ // عرض رسالة الخطأ الخاصة بعدد الحروف
            $('#register').attr("disabled", true);
            $('#availability').html('<span class="text-danger">يجب أن يكون عدد أحرف إسم المستخدم أكبر من 3</span>');
          }


        });
      });
    </script>
  </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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...