لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
بخصوص الحذف المتعدد
السلام عليكم
بخصوص الحذف المتعدد
عندي يشتغل على اللوكال هوست 100% لكن على الموقع لا يعمل
شوف الكود
for($i=0;$i<8;$i++){
	$file_id = $checkbox[$i];
	$file_query = @mysql_query("SELECT * FROM `".$db[prefix]."uploaded`
                                     WHERE `id` = '$file_id' AND
                                           `uploadedby` = '".$QUL[id]."'");
	$num_file = @mysql_num_rows($file_query);
	$row_file = @mysql_fetch_assoc($file_query);
		if($num_file > 0){
			@unlink('uploaded/file/'.$row_file[newname]);
			@mysql_query("DELETE FROM `".$db[prefix]."uploaded` WHERE `id` = '$file_id'");
		}
}
الجيك بوكس في صفحة تحديد الملفات
<input type="checkbox" name="checkbox[]" value="{file.id}" />


اتمنى اشوف الحل
تاريخ البداية: 21 / سبتمبر / 2011 الساعة 12:45 اخر نشاط: 21 / سبتمبر / 2011 الساعة 12:45 checkbox حذف
2 إجابات
يمكنك استعمال دالة الـimplode الخاصة بـPHP ودالة IN() الخاصة بالـMYSQL
كالاتى:
mysql_query(\"delete from `table` where id IN(\".implode(\",\",$_POST[\'checkbox\']).\")\")

لكنها لن تعمل لحذف الملفات الترتطبة بالصف

بواسطة: Gamal
منذ: 21 / سبتمبر / 2011 الساعة 12:45

يا اخى جرب هذه الطريقة:
اولا نتاكد من وجود الارسال بدالة isset() ثم نستخدم الـforeach لتفريغ المصفوفة
اليك الكود الكامل
if(isset($_POST[\'checkbox\'])){
    foreach ($_POST[\'checkbox\'] as $file_id) {
$file_id = intval($file_id);
    $file_query = @mysql_query(\"SELECT * FROM `\".$db[prefix].\"uploaded`
                                     WHERE `id` = \'$file_id\' AND
                                           `uploadedby` = \'\".$QUL[id].\"\'\"); 
        if ($row_file = @mysql_fetch_array($file_query)) {
            if(@unlink(\'uploaded/file/\'.$row_file[\'newname\'])){
                @mysql_query(\"DELETE FROM `\".$db[prefix].\"uploaded`
                                 WHERE `id` = \'$file_id\'\");
            }
        
        }
    }    
}
بس انا لاحظت بعض العيوب البرمجية فى الكود الاول هى مش هتخلى الاسكربت يقف بس هى عيوب برمجية يفضل تحسينها مثل:
  • عد عدد الصفوف الاول للتاكد من وجود الملف ولكن يمكنك مساواة المتغير الخاص بالصف والتاكد من وجوده فى مرة واحدة باستخدام =
  • مثل
    if ($row_file = @mysql_fetch_array($file_query))
    الان انت وضعت الـ$row_file يساوى الصف ان وجد
  • ثانيا من وجهة نظرى يجب حذف الملف من السرفر اولا ولو اتحذف تحذف صفه فى قاعدة البينات
  • يفضل استعمال علامات التنصيص مثل $row_file[\'newname\'] بدلا عن $row_file[newname]

بواسطة: MacOS
منذ: 21 / سبتمبر / 2011 الساعة 12:45

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة