2011-04-11 56 views
1

我有一個時間赫克搞清楚如何張貼,遊客對項目列表中的個別項目列表中的一個單獨的項目,崗位等級使用笨

這個代碼讓我們我率多項目,但不是單一的項目:

for($i=0;$i<2;$i++){ 
    $doc_item_id = $_POST['item_id0'][$i]; 
    $doc_rating = $_POST['document_rating'][$i]; 

    $it_rt = array(
     'item_id' => $doc_item_id, 
     'rating' => $doc_rating, 
    ); 
    $this->purchases_model->update_document($it_rt); 
} 

,而這種代碼讓我們我率僅的第一項(或最後一個項目不同的地方我把「突破;」):

foreach($_POST['item_id0'] as $doc_item_id){ 
    foreach($_POST['document_rating'] as $doc_rating){ 
    } 
    break; 
} 
$it_rt = array( 
    'item_id' => $doc_item_id, 
    'rating' => $doc_rating, 
); 
$this->purchases_model->update_document($it_rt); 

任何思考如何相關這些使得用戶可以評價他們選擇的單個項目將是非常感謝,

+0

您可以使用更好的html解決方案。就像爲每個項目設置一個單選按鈕並使所有按鈕位於同一組中一樣。然後只有一個評分字段直接映射到相應的項目。 – Khez 2011-04-11 19:08:23

回答

1

如果用戶應該選擇項目進行評分(而不是等級在同一時間的所有項目),你應該允許他這樣做(只顯示一個項目,讓他選擇一個使用單選按鈕......),然後你應該可以在PHP方面檢索要修改的項目的索引。

最後,爲了改變只有一個項目,你的代碼應該像(PHP身邊,你肯定要更新您的HTML表單以及)

$i = $_POST['item_index']; // Here I'm supposing that you have added radio buttons 
          // named 'item_index' to allow user to choose the item to rate 

$doc_item_id = $_POST['item_id0'][$i]; 
$doc_rating = $_POST['document_rating'][$i] ; 

$it_rt = array( 
     'item_id'=> $doc_item_id, 
     'rating' => $doc_rating, 
    ); 

$this->purchases_model->update_document($it_rt); 

事實上這幾乎是原來的代碼沒有for循環。

+0

感謝khez和frosty z,擺脫了foreach循環並修復了html的一些部分,現在它的工作原理! – 2011-04-13 18:31:09

+0

很高興你解決了你的問題。如果您發現它們有用,請不要忘記加註/接受答案:) – 2011-04-13 18:36:56

1

循環遍歷整個列表只是爲了限制你想要的物品,有點不好。

這裏有一個關於如何使用一些陣列功能做一個例子:

$last=true; // false for first 
if($last){ 
    $id=end($_POST['item_id0']); 
}else{ 
    $id=reset($_POST['item_id0']); 
} 
// alternative: $id=($last)?end($_POST['item_id0']):reset($_POST['item_id0']); 

// test id 
if($id===false){ 
    // no item was supplied 
} 
if(!isset($_POST['document_rating'][$id])){ 
    // somehow, the item id doesn't have a matching document rating 
} 

// everything is okay! 
$doc_item_id = $_POST['item_id0'][$id]; 
$doc_rating = $_POST['document_rating'][$id]; 

$it_rt = array(
    'item_id' => $doc_item_id, 
    'rating' => $doc_rating, 
); 

$this->purchases_model->update_document($it_rt);