0

「位置」フィールドを持つカテゴリのテーブルがあります。結果はこのフィールドで並べ替えられます。新しい行の位置 (最後以外) を選択できるようにしたい。

基本的に、フォームにはユーザーが「前」または「後」を選択できるフィールドがあり、すべてのカテゴリが位置別に一覧表示されます。フォームが送信されると、選択内容に基づいてフォームが更新されます。たとえば、既存の行が 7 行あり、ユーザーが [5 より前] を選択した場合、新しい行の位置は 5 になり、その後のすべての行 (以前は位置 5 だった行を含む) が更新されます。「5 以降」を選択すると、新しい行の位置が 6 になり、以前は 6 と 7 だった行が 7 と 8 に更新されます。

誰にもアイデアはありますか?

PS: 私はこれを CodeIgniter で行っています (わからない場合) が、ロジックは基本的に同じになると確信しています。

if(count($this->info) > 0)
{       
     if($this->info['place'] == 0)
     {            
          $new_cat_position = $this->info['where'];       
     }
     else
     {       
          $new_cat_position = $this->info['where'] + 1;
     }
     $data = array(
            'title' => $this->info['title'],
            'collapsible' => $this->info['collapsible'],
            'position' => $new_cat_position
        );
     if($this->db->insert('forum_parents', $data))
     {
          if($this->info['place'] == 0)
          {
              $this->db->where('position > ', $new_cat_position + 1);
          }
          else
          {
              $this->db->where('position > ', $new_cat_position);
          }
          if(!$this->db->update('forum_parents', $data))
          {
              $this->error = "The category was created, however, the positions of the other categories were not updated correctly... ".$this->db->_error_message();
          }
     }
     else
     {
          $this->error = "An unknown system error occurred while processing your request.  Please try again later... ".$this->db->_error_message();
     }
}
4

1 に答える 1

0

DataTable を使用してみてください。それはあなたを助けるでしょう。その中で、要件に従って行の並べ替え機能を試してください。

ここにリンクがあります:

 http://code.google.com/p/jquery-datatables-row-reordering/wiki/Index

作業例は次のとおりです。

 http://live.datatables.net/onigip/2

Roe-Reordering ができるようになったら、何らかのロジックを使用してデータベース内のそのレコードを更新できます。

この助けを願っています。

于 2013-06-19T13:36:22.363 に答える