「位置」フィールドを持つカテゴリのテーブルがあります。結果はこのフィールドで並べ替えられます。新しい行の位置 (最後以外) を選択できるようにしたい。
基本的に、フォームにはユーザーが「前」または「後」を選択できるフィールドがあり、すべてのカテゴリが位置別に一覧表示されます。フォームが送信されると、選択内容に基づいてフォームが更新されます。たとえば、既存の行が 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();
}
}