2011-06-05 1 views
0

リストがあります 各行には、MySQLデータベースに格納されている共通の入力フィールド「sort_order」があります。リストのソート順をインラインで変更する

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

編集フォームに入ることなく、並べ替え順序をインラインで変更できます。

データベースにすべての値を取得するにはどうすればよいですか。私は配列にsort_order [row_id]と値を追加する各行をループする必要があると思います。しかし、私はこれを達成する方法に固執しています。

すべての値は火災警報に従って掲載されています。説明でSORT_ORDER [50] 1、SORT_ORDER [51] 2等

新しい試み:

Iは、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

dbに値を保存するためのコードがありますか?あなたのDB構造を見ることは非常に興味深いでしょう! –

+0

あなたは何とかあなたの質問をクリアすることができますか?あなたのフィールドはDBにあり、何を正確に表示したいですか?申し訳ありませんが私はあなたの問題を得ることができません! – homayoun

+0

私はリストビューを持っています。私はリストビューからデータベースの 'sort_order'列の値を編集できるようにしたい。 – Steve

答えて

0

を[OK]を、これは動作するようです:

<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(); $ sortorder [] = $ _REQUEST ['sort_order_']: for($ i = 0; $ i request->投稿['sort_order']); $ i]; } $ this-> model_shelters_cat-> updateCatSortOrder($ sortorder); – Steve

+0

サスカ、正しい方向に私を指してくれてありがとう – Steve

1

ちょうどempty square bracketsを使用します。

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

あなたは、入力にアクセスすることができます配列として、それをあなた自身で構築することから守ります。 $_POST['sort_order'](または<form>タグで指定されたメソッド属性に応じて$_GET)として保存されます。関連ノートで

それをエコーするとき、あなたはおそらく$sort_orderをエスケープする必要があります

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

サミール、正しい方向に私を指してくれてありがとう – Steve

関連する問題