عرض مشاركة واحدة
عضو نشيط
تاريخ التسجيل: Oct 2003-
#8 (permalink)  

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

كود PHP:
$list_sub=mysql_query("UPDATE  MainNews SET main_value='1' WHERE id='$val' ");
$list_sub1=mysql_query("UPDATE  MainNews SET main_value='0' WHERE id !='$val' "); 
ما عمل هذين الإستعلامين؟

الأول يقوم بوضع القيمة "1" في حقل main_value في الحقل صاحب الـid رقم $val
و الثاني يقوم بوضع القيمة "0" في باقي الحقول و هذا من الشرط WHERE id!=$val

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

أنت لم تستفد أبداً من الـ checkbox ..


أحد الحلول الممكنة:

1. أن تقوم أولا بوضع القيم "0" في الحقل main_value لكل الأخبار, و يكون هذا خارج الحلقة لكي يتم تنفيذه مرة واحدة.
كود PHP:
$list_sub=mysql_query("UPDATE  MainNews SET main_value='0'"); 
2. أن أن تضع استعلام واحد مشروط داخل الحلقة تختبر فيه قيمة sub_id, بحيث إذا كانت قيمته لا تساوي NULL قم بوضع القيمة "1" في الحقل main_value للبيان صاحب الـid رقم sub_id
كود PHP:
if($val! = Null)
$list_sub1=mysql_query("UPDATE  MainNews SET main_value='1' WHERE id ='$val' "); 
أي قم بتغيير هذا اكود

كود PHP:
        // اعتقد هنا الخلل
        
foreach($_POST['sub_id'] AS $val){
        
$list_sub=mysql_query("UPDATE  MainNews SET main_value='1' WHERE id='$val' ");
        
$list_sub1=mysql_query("UPDATE  MainNews SET main_value='0' WHERE id !='$val' ");
                    } 
بهذا:

كود PHP:
        // اعتقد هنا الخلل
$list_sub=mysql_query("UPDATE  MainNews SET main_value='0'");
        foreach(
$_POST['sub_id'] AS $val){
if(
$val! = Null)
$list_sub1=mysql_query("UPDATE  MainNews SET main_value='1' WHERE id ='$val' ");
                    } 

هذا كله في حالة أنك تريد وضع القيمة "1" لأكثر من خبر, أما إذا كنت تريد تعيين خبر واحد فقط, قم باستبدال الـcheckbox inputs بالــradio inputs

أرجو أن أكون قد أفدت .. وفقك الله أخي .






Seanshi غير متواجد حالياً   قديم 24-02-2006, 12:26 PM
رد مع اقتباس