2011-06-05 143 views
0

我有一个列表 每行都有一个存储在MySQL数据库中的公共输入字段“sort_order”。更改列表排序顺序内联

<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" /> 

我有这就是所谓的后上的控制器功能:

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'] . "'"); 
    } 
} 

最新最好的方式实现这一目标?

+0

你已经有一些代码保存在数据库中的值?看到你的数据库结构也会很有趣! – 2011-06-05 22:30:06

+0

你能以某种方式清除你的问题吗?你在数据库中的领域是什么?你想要展示什么?对不起,我无法解决你的问题! – homayoun 2011-06-05 22:16:41

+0

我有一个列表视图。我希望能够从列表视图编辑数据库中的'sort_order'列值。 – Steve 2011-06-05 22:24:07

回答

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']). "'"); 
    } 

} 
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]; 
} 
+0

是这样吗? $ sortorder = array(); ($ i = 0; $ i request-> post ['sort_order']); $ i ++){sortorder [] = $ _REQUEST ['sort_order_']。 $ i]; } $ this-> model_shelters_cat-> updateCatSortOrder($ sortorder); – Steve 2011-06-05 23:06:15

+0

Sascha,感谢您指引我朝着正确的方向 – Steve 2011-06-06 19:59:17

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); ?>" /> 
+0

Samir,感谢您指引我朝着正确的方向 – Steve 2011-06-06 19:59:32