مشكله في الاضافه الى قاعده البيانات الموجوده في mysqli عن طريق php

  • Bing

اخواني الاعزاء عملت form ادخال

ثم قمت با عمل قاعده بيانات بعد ذالك قمت بكتابه كود php من اجل ان تكون الاضافه الى قاعده البيانات من خلال form

لكن وجهتني مشكله خمس ايام ابحث عن حل ولم اجد

المشكله لا يظهر لي اي خطاء في المتصفح لكن لا يضيف اي بيانات الى قاعده البيانات

لو سمحتو احد عنده حل

هذا هي لاكواد

كود html

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>شاورمر - اضافه وجبات</title>

  <link rel="stylesheet" href="css of control.css">

</head>

<body>

<center>

<div class="min">

<form action="rinsert.php" method="post" enctype="multipart/form-data">

<h2> ادره الوجبات</h2>

<img src="logob.png" width= "100px" >

<br>

<br>

<input type="text" name='name'>

<br>

<br>

<input type="text" name='price'>

<br>

<input type="file" id="file" name='image' style='display:none;' >

<label for="file">صوره للوجبه</label>

<button  name='upload'> اضافه الوجبه</button>

<br>

<br>

<a href="foods.php">عرض كافه الوجبات</a>

</form>

</div>

</center>

</body>

</html>

كود الربط

<?php

$uu = "root";

$pp = "";

$cooon = new PDO("mysql:host=localhost; dbname=restfood;charset=utf8;",$uu,$pp);

if($cooon)

{

   echo 'yeees';

}

else {

   echo 'nooo';

}

?>

كود php

<?php

include('config.php');

?>

<?php

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

  $NAME = $_POST['name'];

  $PRICE = $_POST['price'];

  $IMAGE = $_FILES['image'];

  $image_location = $_FILES['image']['tmp_name'];

  $image_name   =$_FILES['image']['name'];

  $image_up    = "iamges/".$image_name;

  $insrt = $cooon->prepare("INSERT INTO foodrest('id','fname','fprice','fimage') VALUES ('$NAME,'$PRICE',' $image_up')");

  var_dump( $insrt->errorInfo());

  if( $insrt){

    echo "<div class='alert alert-success'>"."تمت الاضافه"."</div>";

  }

  else{

    echo "<div class='alert alert-danger'>"."حدثت مشكله لم تتم الاضافه "."</div>";}

}

?>

النتائج في المتصفح

(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL }

تمت الاضافه

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

Mustafa_Suleiman أضف ردا

بعض الإقتراحات التي يمكن أن تساعد على حل هذه المشكلة:

  1. في كود الـ PHP، يجب تغيير قيم الأعمدة في عبارة SQL INSERT لتتوافق مع الأعمدة في جدول الـ MySQL الخاص بك، أي تحتاج إلى تغيير "id" إلى اسم العمود الذي يحتوي على الـ ID في جدول الـ MySQL الخاص بك.
  2. تحتاج إلى تحديد قيمة الـ PATH الخاص بالصورة في العبارة SQL INSERT بدلاً من إدخال اسم الملف، على سبيل المثال، بدلاً من إدخال " $image_up " يجب عليك استخدام " $image_location ".
  3. تأكد من أن جدول الـ MySQL الخاص بك يسمح بإدخال البيانات إلى الأعمدة التي تحاول إضافة البيانات إليها.
  4. تأكد من أن الملف المراد تحميله يتوافق مع النوع المسموح به في تكوين PHP، كمثال، إذا كان الملف نوع الصورة يجب التأكد من أنها بصيغة JPG أو PNG أو GIF إلخ.
  5. يمكنك إضافة عبارة "die()" بعد كل عبارة SQL INSERT لمعرفة ما إذا كان يوجد خطأ في إضافة البيانات إلى جدول MySQL، مثلاً يمكنك استخدام:
if(!$insrt) {
  die("Error: " . $cooon->error);
}

اشرك اخي معلومتك مفيده الله يحفظك

بناءً على الكود المرفق، يظهر أن هناك بعض المشاكل الصغيرة التي يمكن تصحيحها. إليك بعض التعديلات التي يجب إجراؤها لحل المشكلة:

  • في كود PHP الخاص بإدراج البيانات، يوجد خطأ في إنشاء استعلام SQL. يجب إزالة الاقتباسات عند كتابة أسماء العمود في الجدول. وأيضاً هناك خطأ في تنسيق الاقتباسات المستخدمة في قيم البيانات. يجب تعديل الاستعلام بالشكل التالي:
$insrt = $cooon->prepare("INSERT INTO foodrest(id, fname, fprice, fimage) VALUES ('$NAME', '$PRICE', '$image_up')");

اشكرك اخي على الرد

شكر الجزيل

استعلام الادراج الخاص بك يحوي عدة أخطاء، هي:

  • في وضع علامات التنصيص في حقن المتغيرات:
"INSERT INTO foodrest('id','fname','fprice','fimage') VALUES ('$NAME,'$PRICE',' $image_up')"
                                                                    ^           
  • في وضع علامات التنصيص لأسماء الأعمدة:
"INSERT INTO foodrest('id','fname','fprice','fimage') VALUES ('$NAME,'$PRICE',' $image_up')"
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  • في تصريح اربع اعمدة وحقن 3 قيم فقط:
"INSERT INTO foodrest('id','fname','fprice','fimage') VALUES ('$NAME,'$PRICE',' $image_up')"
                       1     2        3        4                 1       2            3         

فيما يلي الاستعلام الصحيح:

"INSERT INTO foodrest(fname, fprice, fimage) VALUES ('$NAME', '$PRICE', '$image_up')"

وذلك لأن المعرف id يكون مرتبا تصاعديا في الغالب، ولا حاجة لحقن قيمة له لأن يمتلك بالفعل قيمة افتراضية.

اشكررك اخي الله يحفظك

Mohammed_Fahmy3 أضف ردا

لقد قمت بإنشاء نموذج إدخال لإضافة وجبات إلى قاعدة بيانات مطعم شاورمر. ولكن يبدو أن هناك خطأ في كود php الخاص بك الذي يمنع إدخال البيانات إلى الجدول foodrest. لحل هذه المشكلة، أقترح عليك مراجعة النقاط التالية:

- تأكد من أن اسم الجدول وأسماء الأعمدة في عبارة الإدراج مطابقة لما هو موجود في قاعدة البيانات. يفضل استخدام اقتباسات مائلة (`) لتحديد أسماء الجدول والأعمدة في mysql, بتفصيل أكثر, يجب استخدام علامات التَّدقيق العكسي (backticks) (أو الـbackquotes) لتحديد أسماء الجداول والأعمدة. هذا يضمن أن الأسماء لا تتعارض مع الأوامر المحجوزة في MySQL ولا تحتوي على مسافات أو أحرف غير صالحة. كما يمكن استخدام علامات التنصيص الفردية (single quotes) أو الضعف (double quotes) للقيمة المُدخلة، على سبيل المثال:

INSERT INTO `table_name` (`column1`, `column2`, `column3`) VALUES ('value1', 'value2', 'value3');

- تأكد من أن عدد المتغيرات في قيم الإدراج مساوٍ لعدد الأعمدة في الجدول. في كودك، لديك أربعة أعمدة (id, fname, fprice, fimage) ولكن ثلاثة متغيرات فقط ($NAME, $PRICE, $image_up). يجب إضافة قيمة للعمود id أو جعله تلقائيًا (auto_increment) في قاعدة البيانات.

- تأكد من أن نوع البيانات في كل عمود يتوافق مع نوع المتغير المرسل إليه. في كودك، لديك عمود id من نوع int ولكن ترسل إليه قيمة نصية ($NAME). يجب تحويل قيمة $NAME إلى رقم صحيح أو استخدام عمود آخر لحفظ اسم الوجبة.

- تأكد من أن تحميل الصورة إلى المجلد iamges قد نجح قبل إضافتها إلى قاعدة البيانات. يمكنك استخدام دالة move_uploaded_file() لنقل الصورة من الموقع المؤقت ($image_location) إلى الموقع المستهدف ($image_up) والتحقق من نتيجتها.

- تأكد من أن تنفيذ عبارة الإدراج قد نجح بالفعل قبل طباعة رسالة النجاح. يمكنك استخدام دالة execute() لتنفيذ عبارة الإعداد ($insrt) والتحقق من نتيجتها.

وهذه بعض المصادر لتعلم أستعلامات SQL حتي لا تقع في مثل هذه الأخطاء مرة أخري.

اخي لقد عدلت الكود باالشكل التي واشتغل عندي

<?php

include('configg.php');

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

  $NAME = $_POST['name'];

  $PRICE = $_POST['price'];

  // $IMAGE = $_FILES['image'];

  // $image_location = $_FILES['image']['tmp_name'];

  // $image_name  = $_FILES['image']['name'];

  // upload variables

  $imag = $_FILES['image'];

  $itemimgName = $_FILES['image']['name'];

  $itemimgTmp = $_FILES['image']['tmp_name'];

  $explava = explode('.', $itemimgName);

  $endava = end($explava);

  $itemimgExten = strtolower($endava);

  $itemimg = rand(0, 10000) . '_' . $itemimgName;

  $insert = "INSERT INTO food(name , price , image) VALUES ('$NAME','$PRICE','$itemimg')";

  // var_dump($insert -> erorrInfo($insert));

  mysqli_query($con ,$insert);

  if(move_uploaded_file($itemimgTmp, "pp\\" . $itemimg)){

    echo "<script>alert('تمت الاضافه بنجاح')</script>";

  }

  else{

    echo "<script>alert('لم تتم الاضاقه هنالك مشكله')</script>";

  }

}

?>

اشكرك اخي انا مبتدىء

انشاء الله نتعلم منكم