چک کردن تکراری نبودن نام کاربری و ایمیل
سلام هر کاری میکنم نام کاربری و ایمیل تکراری در دیتابیس ثبت میشود لطفا راهنمایی کنید
<?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 * FROMtaskORDER BYtask.task_scoreDESC" );
$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 INTOtaskVALUES ('', '$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(){
}
از این چند متدی که خود استاد آقاجانی آموزش دادن استفاده کنید.
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 رو برای تکراری نبودن چک کردید. پس اینجوری کاربری با نام کاربری متفاوت اما ایمیل یکسان میتونه ثبت نام کنه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .