0

目前我正在构建一个站点,其中一个功能是能够创建一个列表,然后您可以添加指向特定列表的链接。一个列表会有很多链接。

我想weight通过简单地将元素拖放li到新位置,然后weight通过 ajax 调用使用链接更新数据库来对链接列表进行排序。

列表表:id | list_title | list_description | user_id | rating | views | date_created

链接表:id | title | url | user_id | list_id | weight | date_created

查看文件

<ul id="links_list">
<?php

if($links->num_rows() >= 1){

    $i = 0;

    foreach($links->result_array() as $link){

        echo "<li class=\"list_item-".$i."\">";
        echo ''.$link['title'].'<br><br>';
        echo "</li>";

        $i++;
    }

}else{

    echo "You have not yet added any links to this list.";

}

?>
</ul>

我知道这没什么可做的,但不确定如何完成此操作或什至从哪里开始。

任何帮助是极大的赞赏。

4

2 回答 2

2

我最终想出了解决这个问题的方法,如下所示。

看法

<ul id="links_list" class="sortable">
<?php

if($links->num_rows() >= 1){

    $i = 0;

    foreach($links->result_array() as $link){

        echo "<li id=\"list_item-".$link['id']."\">";
        echo ''.$link['title'].'<br><br>';
        echo "</li>";

        $i++;
    }

}else{

    echo "You have not yet added any links to this list.";

}

?>
</ul>

jQuery

$("#links_list").sortable(
{
    connectWith: '.sortable',    
    update : function () 
    { 
        $.ajax(
        {
            type: "POST",
            url: base_url + "links/reorder",
            data: 
            {
                links: $("#links_list").sortable('serialize')              
            },
            success: function(html)
            {
                html;
            }
        });
    } 

}).disableSelection();

链接/重新排序 php 脚本

public function reorder(){

    parse_str($this->input->post('links'), $links); 

    foreach($links['list_item'] as $key => $value){

        $this->db->set('weight', $key);
        $this->db->where('id', $value);
        $this->db->update('links');

    }

}

希望这可以帮助某人。

于 2013-10-24T19:02:15.377 回答
1

我建议使用jquery ui sortable。您可以附加到其中一个事件,例如change在进行更改时获取列表并将 ajax 调用发送到服务器以进行保存

于 2013-10-24T17:43:29.917 回答