آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چک کردن تکراری نبودن نام کاربری و ایمیل

samisam  10 سال پیش  10 سال پیش
0 0

سلام هر کاری میکنم نام کاربری و ایمیل تکراری  در دیتابیس ثبت میشود لطفا راهنمایی کنید

  <?php

if (isset($_REQUEST['action'])){
    $action = $_REQUEST['action'];
} else {
    echo "Invalid Data";
    exit;
}

if ($action=="read"){
    readData();
} else if ($action=="insert"){
    insertData();
} else if ($action=="update"){
    updateData();
}

function connectToDatabase(){
    $connection=mysqli_connect("localhost","root","", "note_db");
    if (mysqli_connect_errno())
    {
        echo "Failed To Connect To MySQL : " . mysqli_connect_error();
    }
    return $connection;
}


function readData(){
    $connection = connectToDatabase();
    $result = mysqli_query($connection, "SELECT * FROM task ORDER BY task.task_score DESC" );

    $output = array();
    while($row = mysqli_fetch_array($result))
    {
        $record = array();
        $record['task_id']= $row['task_id'];
        $record['task_username']= $row['task_username'];
        $record['task_password']= $row['task_password'];
        $record['task_email']= $row['task_email'];
        $record['task_score']= $row['task_score'];

        $output[] = $record;
    }
    echo json_encode($output);
    mysqli_close($connection);
}

function insertData(){

    $connection = connectToDatabase();

        if (empty($_POST['username'])) {
            $error[] = 'Please Enter a name ';
        } else {
            $username = $_POST['username'];
        }
        if (empty($_POST['email'])) {
            $error[] = 'Please Enter your Email ';
        } else {
            $email = $_POST['email'];
        }
        if (empty($_POST['password'])) {
            $error[] = 'Please Enter Your Password ';
        } else {
            $password = $_POST['password'];
        }
        if (empty($error))
        { // If everything's OK...

            $query = "SELECT * FROM task WHERE username ='$username'";
            $result = mysqli_query($connection, $query); // here $dbc is your mysqli $link
            if (!$result) {
                echo ' Database Error Occured ';
            }
            if (mysqli_num_rows($result) == 0) { // IF no previous user is using this username.

                $query = "INSERT INTO task VALUES ('', '$username', '$email', '$password','','')";

                $result = mysqli_query($connection, $query);
                if (!$result) {
                    echo 'Query Failed ';
                }
        mysqli_close($connection); //Close the DB Connection

         } // End of the main Submit conditional.
    }
}
function updataData(){
   
}

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
mhpakdel  10 سال پیش
+1 0

از این چند متدی که خود استاد آقاجانی آموزش دادن استفاده کنید.

     public function first($sql){
      $records = $this->query($sql);
      if($records == null){
        return null;
      }
      return $records[0];
    }

قطعه کد بالا که متد first هست، اولین عنصر بازگشتی از دیتابیس رو واکشی میکنه.

     public function query($sql){
      $result = $this->connection->query($sql);
      $records = array();
      if($result->num_rows == 0){
        return null;
      }
      while($row = $result->fetch_assoc()){
        $records[]=$row;
      }
      return $records;
    }

قطعه کد بالا هم دستور sql رو براتون به دیتابیس ارجاع میده و خروجی رو در records ذخیره میکنه.
بعد برای شرط مقایسه برای وجود یا عدم وجود رو بعد از گرفتن اولین عنصر پیدا شده از این طریق چک کنید:

 $record = $db->first("SELECT * FROM x_user WHERE email='$email'");
if($record != null){
   echo "already registered";
   exit;
} else {

بعد از دستور else هم دستور درج در دیتابیس رو بزنید چون اگه ایمیل مشابهی پیدا نشه به این else خواهیم رسید.

البته این رو هم در نظر داشته باشید که من ایراد کد شما رو نتونستم متوجه بشم اما این تغییراتی که گفتم میتونه کمکتون کنه و همچنین شما در قسمت شرطتون فقط username رو برای تکراری نبودن چک کردید. پس اینجوری کاربری با نام کاربری متفاوت اما ایمیل یکسان میتونه ثبت نام کنه.


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .