在线更改列表排序顺序

时间:2011-06-05 22:08:52

标签: php mysql

我有一份清单 每行都有一个公共输入字段“sort_order”,它存储在MySQL db中。

 <input name="sort_order" type="text" value="<?php echo $cat['sort_order']; ?>" size="3" />

我希望能够在不进入编辑表单的情况下更改内联排序顺序。

如何将所有值都放入数据库中。我想我需要循环遍历每一行,将sort_order [row_id]和值添加到数组中。但我仍然坚持如何实现这一目标。

根据firePHP发布所有值。 sort_order [50] 1,sort_order [51] 2等。

新尝试解释:

我有一个包含2个输入字段的列表视图。

<input name="cat_id" type="hidden" value="<?php echo $cat['cat_id']; ?>" /> 

<input name="sort_order" type="text" value="<?php echo $cat['sort_order']; ?>" size="3" />

我有一个在控制器中调用post的函数:

public function sortOrderUpdate(){


//collect the values of cat_id and sort_order from each input into a array
//$this->request->post['sort_order']
//$this->request->post['cat_id']

//send to the model

$this->model_cat->updateCatSortOrder($sortorderarray);


}

数据库模型文件功能:

public function updateCatSortOrder($sortorderarray){


foreach((int)$sortorderarray as $sort){
$this->db->query("UPDATE cat SET sort_order='" . (int)$sort['sort_order'] . "'  WHERE cat_id = '" . (int)$sort['cat_id'] .  "'");
    }
}

实现这一目标的最佳途径是什么?

3 个答案:

答案 0 :(得分:1)

只需使用empty square brackets

<input type="text" name="sort_order[]" value"<?php echo $sort_order; ?>" />

然后,您可以将输入作为数组访问,从而使您无需自行构建。它将存储为$_POST['sort_order'](或$_GET,具体取决于<form>代码中指定的方法属性。

在相关的说明中,你应该在回复它时逃避$sort_order

<input type="text" name="sort_order[]" value"<?php echo htmlspecialchars($sort_order); ?>" />

答案 1 :(得分:0)

我不建议在html名称中使用[]。

<input type="text" name="sort_order_<?php echo $row_id; ?>" value"<?php echo $sort_order; ?>" />

说,你有50个输入字段,发布时,你可以这样建立一个数组:

$sortorder = array();
for($i=0; $i<50; $i++){
    $sortorder[] = $_REQUEST['sort_order_' . $i];
}

答案 2 :(得分:0)

好的,这似乎有效:

<input name="cat_id[]" type="hidden" value="<?php echo $cat['cat_id']; ?>" />
<input name="sort_order[]" type="text" value="<?php echo $cat['sort_order']; ?>" size="3" />

控制器:

    public function updateCatSortOrder(){

            $sortvals = $this->request->post['sort_order']; //$this->request->post  same as $_POST 
    $row = $this->request->post['cat_id'];
    $n = count($this->request->post['cat_id']);
    $sortorder = array();
    for($i=0; $i<$n; $i++){

        $sortorder[] = array(
        'cat_id' => $row[$i],
        'sort_order' => $sortvals[$i]
        );
    }


    $this->model_cat->updateCatSortOrder($sortorder);
            }

型号:

 //UPDATE CAT SORT ORDER    
 public function updateCatSortOrder($sortorder){
    foreach($sortorder as $sort){
    $this->db->query("UPDATE cat SET sort_order='" .   $this->db->escape($sort['sort_order']) . "' WHERE cat_id = '" . $this->db->escape($sort['cat_id']).  "'");
   }

 }