• 0

كيف أحفظ ترتيب قائمة ما عن طريق الـ php & JQuery؟

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

اريد حفظ ترتيب القائمة التالية بعد عملية drag and drop

مرفق مثال و جدول القاعدة
و هذا الكود الذي استعمله لإظهار القائمة

 public function test() {
        $choice = Database::getInstance()->query("SELECT * FROM choix WHERE condidat_concour_id = ".$this->data()->ID." ORDER BY ordre ASC");
        foreach($choice->results() as $choi){   
            $cs_code = $choi->cs_code;
            $cs = Database::getInstance()->query("SELECT code,designation,site
                                                        FROM cs 
                                                        WHERE code = '{$cs_code}' ");
           echo "<li id=".$choi->id.">";
           echo "<span class='handle'><i class='fa fa-ellipsis-v'></i><i class='fa fa-ellipsis-v'></i></span>";
           echo "<span class='text'>".$choi->cs_code."</span>";                      
           echo "</li>";
        }
}

حاولت عن طريق اضافة السكريبت التالي

function saveOrder() { v
ar articleorder=""; 
  $("#sortable li").each(function(i) {
    if (articleorder=='') articleorder = $(this).attr('id'); else articleorder += "," + $(this).attr('id'); }); 
       $.post('set_order.php', { order: articleorder }) .success(function(data) { alert('saved'); })
         .error(function(data) { alert('Error: ' + data);
                     });
                     }

و ملف set_order.php

<?php

require_once(core/init.php);

$orderlist = explode(',', $_POST['ordre']); $i = 1 ; foreach ($orderlist as $k=>$order) { $sql = 'UPDATE choix SET ordre = :ordre WHERE id = :id' ; $query = $pdo->prepare($sql); $query->bindParam(':ordre', $i, PDO::PARAM_INT); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); $i++ ;

}

?>

لكن لم تعمل معي ؟؟ :/

2016-04-30_15-31-38.jpg

2016-04-30_15-32-21.jpg

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

إليك هذا المثال الذي سبق لي التعامل معه، وأتمنى أن يكون مفيداً لك كما هو بالنسبة لي:

في ملف js الخاص بحدث تغيير ترتيب العناصر، أضف حدث الدالة التالي:

 

$("#list").live('hover', function() {
        $("#list").sortable({

            update : function () {

                var neworder = new Array();

                $('#list li').each(function() {    

                    //get the id
                    var id  = $(this).attr("id");
                    //create an object
                    var obj = {};
                    //insert the id into the object
                    obj[] = id;
                    //push the object into the array
                    neworder.push(obj);

                });

                $.post("pagewhereyouuselist.php",{'neworder': neworder},function(data){});

            }
        });
    });

ليتم عند أي تغيير في ترتيب العناصل استدعاء ملف Php التالي المسؤول عن تخزين ترتيب العنصر داخل قاعدة البيانات:

$neworderarray = $_POST['neworder'];
//loop through the list of ids and update your db
foreach($neworderarray as $order=>$id){    
    //إعدادات الاتصال بقاعدة البيانات
    $con = mysql_connect("host","username","password");

    if (!$con){
         die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("my_db", $con);

    mysql_query("UPDATE table SET order = {$order} WHERE id = {$id}");
    mysql_close($con);

}

 

المصدر.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


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