0

現在、私はサイトを構築しています。機能の 1 つはリストを作成する機能で、特定のリストへのリンクを追加できます。リストには多くのリンクがあります。

要素を新しい位置にweightドラッグ アンド ドロップし、ajax 呼び出しを介してリンクでデータベースを更新するだけで、リンクのリストを並べ替えたいと考えています。liweight

リスト表: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 呼び出しを送信するなど、イベントの 1 つにアタッチできます。

于 2013-10-24T17:43:29.917 に答える