我有一个包含“位置”字段的类别表。结果将按此字段排序。我希望能够为新行选择一个位置(最后一个除外)。
基本上,表单有一个字段让用户选择“之前”或“之后”,然后按位置列出所有类别。提交表单后,它应该根据选择更新表单。例如,如果现有 7 行并且用户选择“Before 5”,它应该给新行的位置为 5,然后更新之后的每一行(包括之前位置为 5 的行)。如果选择“After 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();
}
}