• 0
MouathPHP

[استفسار] - تحديث البيانات من القاعدة بإستخدام حلقة التكرار

سؤال

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

 

 

أعزائي لدي مشكلة بسيطة وهي:

 

 

انا الآن جلبت بيانات من القاعدة بإستخدام دالة التكرار While() .. على هيئة مربع نصوص <text input>   ..

 

 

ووضعت لها اسم عبارة عن مصفوفة .. []No  ،،

 

ومن ثم أريد أن يتم ادخال البيانات في كل مربع نص الى القاعدة .. أو تحديثها ،،

 

حاولت بشتى الطرق ولا أجد اي طريقة ،،

 

 

 

الكود المستخدمم:

<form action="<? echo $PHP_SELF; ?>" method="post">    <?     $get_2 = mysqli_query($connect,"SELECT * FROM answer WHERE subject_id='$id_g'"); while($val_2 = mysqli_fetch_array($get_2)) {            $ans_id = $val_2['id'];      $ans_2  = $val_2['answer'];  ?>     <input class="input" type="text" name="No[]" placeholder="الإجابة .." value="<? echo $ans_2; ?>" /> <br /><? } ?>                                       <br /><br />      <input type="submit" name="update" class="do floatright" value="تحديث الإستطلاع!" />            </form><?phpif($_POST['update']) { $num = mysqli_num_rows($get_2);   $ans = $_POST['No'];    for($i=0; $i < $num; $i++ ) {        $update = mysqli_query($connect,"UPDATE answer SET answer='$ans[$i]' WHERE subject_id='$id_g'");   }    if($update) {            echo "Updated!";    } else {     echo "Error!";    } }?>

أتمنى المساعدة،،

 

 

شكرا. :)

تم تعديل بواسطه MouathPHP
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

هناك متغير نريد التحقق منه

  •  $get_2 = mysqli_query($connect,"SELECT * FROM answer WHERE subject_id='$id_g'");

    $id_g

  • هل تصل له عن طريق POST او GET  يجب ان توضح طريقة الوصول للسؤال لعرضه

  • $_GET[id_g]

    او

  • $_POST[id_g]
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم أخي .. انا لم اعرض الكود كامل .. فقط الجزئية التي بها مشكلة ،،

 

 

شكرا على ردك :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لقد سئمت جدا من المحاولة .. لا يعمل تحديث الا للفورم الأخير ..

 

 

هل من طريقة ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

منطقيا صحيح اخي

حلقة التكرار الي انت عاملها

من 0 الى عدد الاجوبة الظاهرة

الان سيمر عليهم واحدة تلو الاخرى

ولكن كود تحديث البيانات في الجدول ايضا سيحدث قيمة answer بالاجابات واحدة تلو الاخرى الى ان يصل الى الاخيرة , وبالتالي سأخذ الحقل answer قيمة اخر اجابة فقط

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سأحاول التوضيح أكثر ،،

 

 

انا في البداية أخي جلبت القيم المخزنة قي قاعدة البيانات .. بإستخدام دالة While  ،،

 

ومن ثم أريد تحديث البيانات .. ولكن كيف أحدثها مع الإحتفاظ بنفس المكان في القاعدة ؟ .. يعني كيف أحدث أول فورم وثاني فورم .. وجميع الفورمات التي تم جلبها من القاعدة .. بحيث كل وحدة تتحدث بنفسها بدون تداخلهم مع بعض ..

 

 

أتمنى انو المعلومة وصلت ،،

 

 

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا أريد أن يأخذ قيمة كل اجابة ويحدثها بالبيانات التي يتم ادخالها من قبل المستخدم .. وليس فقط أخذ آخر قيمة !

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ممتاز وجميل , نفهم من ذلك ان التحديث الخاص بك

$update = mysqli_query($connect,"UPDATE answer SET answer='$ans[$i]' WHERE subject_id='$id_g'");

خطأ لانه يقوم بتحديث جميع الاجابات جملة واحدة بحيث يكون الايدي الخاص بالموضوع يساوي قيمة $id_g

لاحظ ان هناك اجابات كثيرة لذلك عليك تحديد كل اجابة وما القيمة الجديدة التي حصلنا عليها

 

من المفترض ان answer به حقل فريد دعنا نفترض انه id

في حلقة التكرار الخاصة بـ طباعة الاجابات يجب ان تحتفظ بقيمة id  لكل اجابة

مثلا

     <input class="input" type="text" name="No[]" placeholder="الإجابة .." value="<? echo $ans_2; ?>" /> <br />

يصبح كالتالي

 <input class="input" type="text" name="No[<? echo $ans_2; ?>]" placeholder="الإجابة .." value="<? echo $val_2['answer']; ?>" /> <br />

وايضا ,

$ans = $_POST['No'];    for($i=0; $i < $num; $i++ ) {        $update = mysqli_query($connect,"UPDATE answer SET answer='$ans[$i]' WHERE subject_id='$id_g'");   }

يصبح كالتالي

$ans = $_POST['No'];foreach($ans as $att=>$val){  $update = mysqli_query($connect,"UPDATE answer SET answer='$val' WHERE id='$att'");}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وأخيرا ،،

 

والله لا أعلم كيف أشكرك ساعدتني جدا وأفدت غيرك،،

 

أشكرك من اعماق قلبي ،،

 

 

والله يوفقك يارب ويثبت خطاك :))

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا عليك عزيزي ,

المهم ان انك استفدت شيئا جديدا وتعلمت اشياء جديدة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .