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

السؤال

نشر

السلام عليكم

هذا كود ارسال لفورم للتسجيل فى الموقع

<?php
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'phplogin';
$db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);	 
	 
$sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)";   
  if($stmt = mysqli_prepare($db, $sql))
  {        
   mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email);            
	 $username = $_REQUEST['username'];     
	 $password = password_hash($_POST['password'], PASSWORD_DEFAULT);     
	 $email = $_REQUEST['email'];             
	  if(mysqli_stmt_execute($stmt))
	  {         
	  echo "Records inserted successfully.";   
	  }
  }
$stmt->close();
$db->close();			   
?>

وهذا الكود للتحقق من ان اسم المستخدم لا يوجد فى الجدول

<?php 
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'phplogin';
$db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ($stmt = $db->prepare('SELECT id, password FROM accounts WHERE username = ?')) 
{
	$stmt->bind_param('s', $_POST['username']);
	$stmt->execute();
	$stmt->store_result();
	if ($stmt->num_rows > 0)
	 {
		echo 'Username exists, please choose another!';
	 } 
	 
 } 	 
$stmt->close();
$db->close();	
?>

كيف يمكن دمج الكودين معا فاذا لم يكن الاسم موجودا فى الجدول  يرسل البيانات للقاعدة

Recommended Posts

  • 1
نشر

يمكنك استخدام الكود كاملا, لقد قمت بتجربته و التأكد من عمله 

<?php 
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'phplogin';
$db = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ($stmt = $db->prepare('SELECT id, password FROM accounts WHERE username = ?')) 
{
	$stmt->bind_param('s', $_POST['username']);
	$stmt->execute();
	$stmt->store_result();
	if ($stmt->num_rows > 0)
	 {
		echo 'Username exists, please choose another!';
	 }else {
		$sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)";   
		if($stmt = mysqli_prepare($db, $sql))
		{        
		   mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email);            
			 $username = $_REQUEST['username'];     
			 $password = password_hash($_POST['password'], PASSWORD_DEFAULT);     
			 $email = $_REQUEST['email'];             
			  if(mysqli_stmt_execute($stmt))
			  {         
			  echo "Records inserted successfully.";   
			  }
		}
	 }
	 
 } 	 
$stmt->close();
$db->close();	
?>

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

وهذا هو الشرط 

if ($stmt->num_rows > 0)
	 {
		echo 'Username exists, please choose another!';
	 } 

نضيف إليه else بحيث يصبح هكذا مع إضافة كود الإدخال إلى قاعدة البيانات.

if ($stmt->num_rows > 0)
{
echo 'Username exists, please choose another!';
}else {
$sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)";   
if($stmt = mysqli_prepare($db, $sql))
{        
mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email);            
$username = $_REQUEST['username'];     
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);     
$email = $_REQUEST['email'];             
if(mysqli_stmt_execute($stmt))
{         
echo "Records inserted successfully.";   
}
}
}

 

  • 1
نشر

يمكنك عمل else في الكود الثاني ليتم تنفيذ الكود الموجود بداخلها إن كان $stmt->num_rows يساوي صفرًا

if ($stmt->num_rows > 0)
{
  echo 'Username exists, please choose another!';
} else {
  $sql = "INSERT INTO accounts (username, password, email) VALUES (?, ?, ?)";   
  if($stmt = mysqli_prepare($db, $sql))
  {        
    mysqli_stmt_bind_param($stmt, "sss", $username, $password, $email);            
    $username = $_REQUEST['username'];     
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);     
    $email = $_REQUEST['email'];             
    if(mysqli_stmt_execute($stmt))
    {         
      echo "Records inserted successfully.";   
    }
  }
}

بهذا الشكل سيتم عمل حساب جديد إن لم يكن موجود في قاعدة البيانات

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...