mysqli_query Register Form

Mahmood_18 • منذ 7 سنوات

 السلام عليكم ..

عندما اكملت العمل على صفحة signup وقمت باضافة div داخل جملة الطباعة بالبوتستراب يظهر في حال عدم اكمال جميع البيانات او عند اكمال التسجيل بنجاح ولكنه لا يعمل عند عرض الصفحة كما لدي الخطأ التالي في  Fatal error: Call to a member function query() on a non-object 

 

 وهذا الكود الذي قمت بكتابته


    <?php

    $u_name = isset($_POST['u_name']) ? $_POST['u_name'] : '';
	
    $u_email = isset($_POST['u_email']) ? $_POST['u_email'] : '';

	$u_pass = isset($_POST['u_pass']) ? $_POST['u_pass'] : '';

	$u_ulv = isset($_POST['u_ulv']) ? $_POST['u_ulv'] : '';
	

	if (isset($_POST['send'])) {

	if (empty ($u_name) && empty($u_pass) && empty($u_email) && empty($u_ulv)){
	
	echo '<div class="alert alert-success" role="alert">الرجاء اكمال جميع الحقول المطلوبة</div>';
	}
	
	else{
	$insert = $db->query("INSERT INTO USER(u_name,u_pass,u_email,u_ulv) VALUES('$u_name','$u_email','u_pass','$u_ulv')") ;
	if (isset($insert_u)) {
	echo '<div class="alert alert-success"  role="alert">مبروك تم تسجيلك بنجاح جاري تحويلك الى الصفحة الرئسية</div>';
	}
	}

	
	}
?>

 

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (6)

Ali Majrashi • منذ 7 سنوات

السلام عليكم ورحمة الله وبركاته 

الخطأ لديك انك لم تقم بتضمين الكود المسؤل بالإتصال بقاعدة البيانات ومن ثم استخدام هذا الكود لاضافة بيانات وتخزينها بقاعدة البيانات 

هنا مثال لطريقة الإتصال بقاعدة البيانات بواسطة استخدام كلاس MySQLI 


<?php
// Connection Settings
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO users (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

عند الإتصال بقاعدة البيانات تاكد انك قمت بإنشاء قاعدة بيانات وبداخلها الجداول والحقول المراد تخزين القيم فيها 

راح افصل لك شرح عمل الأكواد المذكوره فوق 


// Connection Settings
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

بالمتغيرات الي هنا راح نخزن اعدادات الاتصال بقاعدة البيانات مثل

  • السيرفر
  • اسم المستخدم
  • الرقم السري للمستخدم
  • اسم قاعدة البيانات

هذه البيانات مهمة لاجراء اي اتصال لاي قاعدة بيانات

بعدها هذا الكود


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

هالكود راح يقوم بعملية الإتصال بقاعدة البيانات ثم التحقق ان الإتصال تم بدون مشاكل ويخزن Object داخل المتغير conn اما اذا فيه مشاكل راح يعرض لك خطأ ويقطع الإتصال بقاعدة البيانات 

بعدها نجهز Query الخاصة بتخزين البيانات بواسطة هذا الكود


$sql = "INSERT INTO users (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";

هنا نبني Query الي نحب ننفذها مثل ادخال بيانات او تحديد بيانات لعرضها او حتى تحديث بيانات مخزنه مسبقا كل الي تحتاجه معرفة بناء SQL Statment 

بعدها هذا الكود


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

هذا الكود جدا بسيط بواسطة if راح ينفذ Query بقاعدة البيانات وفي حال نجح التنفيذ راح يعرض رساله انه نجحت العملية وفي حالة الفشل راح يطبع رسالة بالخطأ

وآخر كود هو


$conn->close();

هذا الكود راح يقفل الإتصال بقاعدة البيانات عند إنتهاء كل الأوامر بدون مشاكل 

نصائح:

ممكن تنفيذ الإتصال بقاعدة البيانات بطريقتين 

  • MySQLI 
  • PDO

استخدم الي يناسبك دائما انا وضعت لك الأمثله فوق بدون اي تحقق ولا حماية دائما انتبه عند التعامل مع قواعد البيانات وتاكد من البيانات المراد تخزينها او تحديثها او تنفيذها بقاعدة البيانات

تقدر تستفيد من هذه الدروس ومعرفة كيف استخدام كل طريقة وبكل سهولة

MySQLI

PDO

 

Mahmood_18 • منذ 7 سنوات
10 ساعات مضت, Ali Majrashi said:

السلام عليكم ورحمة الله وبركاته 

الخطأ لديك انك لم تقم بتضمين الكود المسؤل بالإتصال بقاعدة البيانات ومن ثم استخدام هذا الكود لاضافة بيانات وتخزينها بقاعدة البيانات 

هنا مثال لطريقة الإتصال بقاعدة البيانات بواسطة استخدام كلاس MySQLI 



<?php
// Connection Settings
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO users (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

عند الإتصال بقاعدة البيانات تاكد انك قمت بإنشاء قاعدة بيانات وبداخلها الجداول والحقول المراد تخزين القيم فيها 

راح افصل لك شرح عمل الأكواد المذكوره فوق 



// Connection Settings
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

بالمتغيرات الي هنا راح نخزن اعدادات الاتصال بقاعدة البيانات مثل

  • السيرفر
  • اسم المستخدم
  • الرقم السري للمستخدم
  • اسم قاعدة البيانات

هذه البيانات مهمة لاجراء اي اتصال لاي قاعدة بيانات

بعدها هذا الكود



// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

هالكود راح يقوم بعملية الإتصال بقاعدة البيانات ثم التحقق ان الإتصال تم بدون مشاكل ويخزن Object داخل المتغير conn اما اذا فيه مشاكل راح يعرض لك خطأ ويقطع الإتصال بقاعدة البيانات 

بعدها نجهز Query الخاصة بتخزين البيانات بواسطة هذا الكود



$sql = "INSERT INTO users (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";

هنا نبني Query الي نحب ننفذها مثل ادخال بيانات او تحديد بيانات لعرضها او حتى تحديث بيانات مخزنه مسبقا كل الي تحتاجه معرفة بناء SQL Statment 

بعدها هذا الكود



if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

هذا الكود جدا بسيط بواسطة if راح ينفذ Query بقاعدة البيانات وفي حال نجح التنفيذ راح يعرض رساله انه نجحت العملية وفي حالة الفشل راح يطبع رسالة بالخطأ

وآخر كود هو



$conn->close();

هذا الكود راح يقفل الإتصال بقاعدة البيانات عند إنتهاء كل الأوامر بدون مشاكل 

نصائح:

ممكن تنفيذ الإتصال بقاعدة البيانات بطريقتين 

  • MySQLI 
  • PDO

استخدم الي يناسبك دائما انا وضعت لك الأمثله فوق بدون اي تحقق ولا حماية دائما انتبه عند التعامل مع قواعد البيانات وتاكد من البيانات المراد تخزينها او تحديثها او تنفيذها بقاعدة البيانات

تقدر تستفيد من هذه الدروس ومعرفة كيف استخدام كل طريقة وبكل سهولة

MySQLI

PDO

 

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

Ali Majrashi • منذ 7 سنوات

هل ممكن تعطيني تفصيل للمشكلة اذا ممكن واذا فيه اخطاء او لا وياريت بعد تشاركنا الكود الي انت اشتغلت عليه بالتعديلات وفيه المشكلة

Mahmood_18 • منذ 7 سنوات

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "blog";


$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

if(isset($_POST["submit"]))
{
	$u_name = isset($_POST['u_name']) ? $_POST['u_name'] : '';
	
    $u_email = isset($_POST['u_email']) ? $_POST['u_email'] : '';

	$u_pass = isset($_POST['u_pass']) ? $_POST['u_pass'] : '';

	$u_img = isset($_POST['u_img']) ? $_POST['u_img'] : '';
}

$sql = "INSERT INTO users (u_name,u_pass,u_email,u_img)
VALUES ('$u_name', '$u_email', '$u_pass', '$u_pass' )";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();



?>



  <div class="wrapper">
  <form class="form-signin" action="" method="POST">
      <h2 class="form-signin-heading">Please login</h2>
	  <input type="text" class="form-control" name="u_name" placeholder="username" required="" autofocus="" />
      <input type="text" class="form-control" name="u_email" placeholder="Email Address" required="" autofocus="" />
      <input type="password" class="form-control" name="u_pass" placeholder="Password" required=""/> 
	  <input type="text" class="form-control" name="u_img" placeholder="Profile Picture" required="" />
      <label class="checkbox">
        <input type="checkbox" value="remember-me" id="rememberMe" name="rememberMe"> Remember me
      </label>
      <button class="btn btn-lg btn-primary btn-block" name="send" type="submit">Login</button>   
    </form>
  </div>

الاخطاء كتالي :

Notice: Undefined variable: u_email

Notice: Undefined variable: u_pass

Notice: Undefined variable: u_img

 

ثم تليها جملة الطباعة echo "New record created successfully";  واذا اكتب البيانات في الفورم واروح على قاعدة البيانات تطلع الاعمدة موجودة ولكن حقولها فارغة ماعدا حقل u_id هو الوحيد الا عاطني رقم 1  

Ali Majrashi • منذ 7 سنوات

الخطأ عندك في if statment بهذا الكود 


if(isset($_POST["submit"]))
{
	$u_name = isset($_POST['u_name']) ? $_POST['u_name'] : '';
	
    $u_email = isset($_POST['u_email']) ? $_POST['u_email'] : '';

	$u_pass = isset($_POST['u_pass']) ? $_POST['u_pass'] : '';

	$u_img = isset($_POST['u_img']) ? $_POST['u_img'] : '';
}

انت جالس تتحق من 


$_POST["submit"]

بينما في النموذج تبعك انت معرف حقل الإرسال بإسم send وليس submit

ولازم ايضا ان يكون كامل الكود داخل if الكود المسؤل عن اضافة record للجدول بقاعدة البيانات ولازم تتحق من ان القيم ليست فارغه ولا اعرض رساله للمستخدم بادخال جميع الحقول 

انا عدلت لك قليلا على كودك ليصبح شكله كالتالي


<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "blog";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

if(isset($_POST["send"]))
{
	$u_name = isset($_POST['u_name']) ? $_POST['u_name'] : '';

	$u_email = isset($_POST['u_email']) ? $_POST['u_email'] : '';

	$u_pass = isset($_POST['u_pass']) ? $_POST['u_pass'] : '';

	$u_img = isset($_POST['u_img']) ? $_POST['u_img'] : '';

	if (!empty($u_name) and !empty($u_email) and !empty($u_pass) and !empty($u_img)) {
		$sql = "INSERT INTO users (u_name,u_pass,u_email,u_img)
		VALUES ('$u_name', '$u_email', '$u_pass', '$u_pass' )";

		if ($conn->query($sql) === TRUE) {
		    echo "New record created successfully";
		} else {
		    echo "Error: " . $sql . "<br>" . $conn->error;
		}
	} else {
		echo "Please Insert All Values";
	}
}

$conn->close();

?>
<div class="wrapper">
<form class="form-signin" action="" method="POST">
  <h2 class="form-signin-heading">Please login</h2>
  <input type="text" class="form-control" name="u_name" placeholder="username" required="" autofocus="" />
  <input type="text" class="form-control" name="u_email" placeholder="Email Address" required="" autofocus="" />
  <input type="password" class="form-control" name="u_pass" placeholder="Password" required=""/> 
  <input type="text" class="form-control" name="u_img" placeholder="Profile Picture" required="" />
  <label class="checkbox">
    <input type="checkbox" value="remember-me" id="rememberMe" name="rememberMe"> Remember me
  </label>
  <button class="btn btn-lg btn-primary btn-block" name="send" type="submit">Login</button>   
</form>
</div>

الآن الكود شغال معي وبدون اي مشاكل

Mahmood_18 • منذ 7 سنوات

الحمد الله الطريقة شغالة 100% بعد مساعتك لي وراحت كل الخطاء و تطلع لي الحقول في الداتا بيس دون مشاكل الان هل اقدر استخدم نفس الكود في نظام تسجيل الدخول والخروج مع مراعاة حذف متغيرات الا ماحتاجها مثل U_EMAIL و U_IMG بالاضافة الى استخدام هذا الكود لجلب البيانات من الداتا بيس  



<?php 
        $result = $db->query("select * from USER"('''''')); 
 ?>

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !