و عليكم السلام ورحمة الله و بركاته ..
كود 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
أرجو أن أكون قد أفدت .. وفقك الله أخي .