الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه MouathPHP في 30 ديسمبر 2013 · 9 رد · 698 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

 

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

 

 

انا الآن جلبت بيانات من القاعدة بإستخدام دالة التكرار 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>




<?php
if($_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 في 30 ديسمبر 2013 في 15:52

#2

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

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

    $id_g

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

  • $_GET[id_g]

    او

  • $_POST[id_g]

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#3

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

 

 

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

#4

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

 

 

هل من طريقة ؟

#5

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

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

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

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

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

 

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

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#6

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

 

 

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

 

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

 

 

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

 

 

شكرا

#7

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

#8

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

$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'");
}

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#9

وأخيرا ،،

 

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

 

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

 

 

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

#10

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

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

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…