保存数据库中的排序顺序

时间:2012-06-20 15:33:42

标签: sorting

我是一名网络开发人员,目前我正在使用一种非常烦人的方法,我认为对于以下内容我的cms方法很难;

我正在制作一个画廊,我想让用户选择如何订购/排序图像。所以他可以改变显示它们的顺序(http://jqueryui.com/demos/sortable/)。 但接下来要做什么如何在数据库中保护此订单?目前我还有一张带有id的额外表格,它们必须出现在网站上。我想是难以思考的方式。

谁知道更好的方法?这很难维持。我正在使用codeigniter和jquery。

1 个答案:

答案 0 :(得分:1)

在Image_Order的数据库表中添加一个额外的字段[photo_ord] 创建图像列表

<li class="left" id="someId">        
<a href="#" >
<img src="image path here" alt="error" id="image_id_here" class="img_thumb"/>
</a>
</li>

函数处理程序(将在任何图像移动时调用)

<a href="#" onclick="change_order()" class="btn_1">Save Order</a>

函数将调用Update Image-Order

进行ajax调用
function change_order()
{
    var urlst="";
    var co=1;
    $('.img_thumb').each(function()
    {
        urlst=urlst+this.id+'#'+co+'*';
        co++;
    });
    $.ajax(
    {
        type:"POST",
        url:"xhr_change_image_order.php",
        data:"orader="+urlst,
        success:function(data)
        {
            if(data=="changed")
                alert("Image order changed.");            
        },
        error:function()
        {
            alert('error occure');
        }
    });
}

文件:xhr_change_image_order.php(将更新数据库)

<?php    
$url = $_POST['orader'];
$photo_arr = explode("*", $url);
foreach ($photo_arr as $k => $ph) {
    if (strlen($ph) > 1) 
    {
          // Update Query 
          // $arr[0]  will contain image id
          // $arr[1]  will contain image order            
            UPDATE `photo` SET `photo_ord` =  $arr[1]  WHERE `photo_id` = $arr[0];
    }
}
echo "changed";
?>

之后创建图库时,只需使用ORDER BY子句获取数据

SELECT * FROM photo ORDER BY  photo_ord asc or DESC