使用codeigniter对列表中的单个项目进行评级

我想知道如何在项目列表中发布单个项目的评级, 这个代码让我为多个项目评分,但不是单个项目:
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);
关于如何纠正其中任何一个的任何想法,以便用户可以评价他们选择的单个项目将不胜感激,     
已邀请:
如果用户应该选择要评分的项目(而不是同时评价所有项目),你应该允许他这样做(只显示一个项目,让他用一个单选按钮选择一项......),然后你应该能够通过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
循环的原始代码。     
循环遍历整个列表只是为了限制你想要的项目,有点不好。 以下是使用某些数组函数如何执行此操作的示例:
$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);
    

要回复问题请先登录注册