1

update_batch で投稿すると、このエラーが発生します。これに関する他の投稿を見たことがありますが、私の行参照は DB_active_rec.php ファイルであり、他の人は MC でそれを見ていました。このエラーは update_batch の投稿を停止せず、$rb_items ごとにエラーを返します。 ここに画像の説明を入力

コントローラ:

  public function update_rb(){

    $rb_items = array();
        $rb_id=$this->input->post('id', TRUE);
        $rb_brand=$this->input->post('brand', TRUE);
        $rb_tasted=$this->input->post('tasted', TRUE);
        $rb_rating=$this->input->post('rating', TRUE);
        $rb_comment=$this->input->post('comment', TRUE);

        $i=0;
        foreach($rb_id as $id){
            $rb_items[$i] = array(
                'id'=>$id,
                'brand'=>$rb_brand[$i],
                'rating'=>$rb_rating[$i],
                'comment'=>$rb_comment[$i]
                );
                if(empty($rb_tasted)){
                    $rb_items[$i]['tasted']=0;
                } else if
                (in_array($id,$rb_tasted)){
                $rb_items[$i]['tasted']=1;
                } else{
                    $rb_items[$i]['tasted']=0;
                }                   
            $i++;
        }
        $this->model->update_rb($rb_items);
    }

モデル:

    public function update_rb($rb_items){
        $this->rb_db->update_batch('rb_selection',$rb_items,'id');
    }

意見:

    <tr>
        <input type="hidden" name="id[]" value="<?php echo $row['id'];?>">
        <input type="hidden" name="brand[]" value="<?php echo $row['brand'];?>">
        <td><?php echo "<p>".$row['brand']."</p>";?></td>
        <td><input type="checkbox" <?php if($row['tasted'] == 1){echo "checked = checked";}?> name="tasted[]" value="<?php echo $row['id'];?>" id="tasted"/></td>
        <td><input type="text" name="rating[]" <?php echo $row['rating'];?>/></td>
        <td><textarea name='comment[]' id='comment' cols="350"><?php echo $row['comment'];?></textarea></td>
    </tr>

誰かがこのエラーを見たことがありますか、または私のコードに欠けているものを知っていますか? 助けてくれてありがとう!

print_r($rb_items)Array ( [0] => Array ( [rb_id] => 192 [brand] => Napa Valley Soda Co [rating] => r0 [comment] => c0 [tasted] => 1 ) [1] => Array ( [rb_id] => 193 [brand] => Natural Brew [rating] => r1 [comment] => c1 [tasted] => 1 ) [2] => Array ( [rb_id] => 194 [brand] => Naturale 90 [rating] => r2 [comment] => c2 [tasted] => 1 ) ) 3 つのブランドが表示されたビューに戻ります。エラーに関係なく、これはすべて正しく投稿されています。

4

4 に答える 4

13

私のバージョンのCIには2.1.2という問題があります。1407行目のDB_active_rec.phpファイルで、

これ: $not[] = $k.'-'.$v;

する必要があります: $not[] = $k2.'-'.$v2;

正しい応答はここで見つかりました: https ://stackoverflow.com/a/12910038/1738895

于 2012-12-24T07:25:52.563 に答える
0

あなたのhtmlタグ名は名前属性の後に[]を持っているので、投稿後に値を配列として取得します。それがこのエラーが発生しているものです。

name 属性から [] を削除して、フォームを送信するだけです。

//名前の後に [] を使用する特定の理由はありますか?

于 2012-12-14T06:39:48.253 に答える
0

ビューに入れたいのは、反復中に増分値を持ち、次のこと$iです。

<tr>
    <input type="hidden" name="comments[<?php echo $i;?>][id]" value="<?php echo $row['id'];?>">
    <input type="hidden" name="comments[<?php echo $i;?>][brand]" value="<?php echo $row['brand'];?>">
    <td><?php echo "<p>".$row['brand']."</p>";?></td>
    <td><input type="checkbox" <?php if($row['tasted'] == 1){echo "checked = checked";}?> name="comments[<?php echo $i;?>][tasted]" value="<?php echo $row['id'];?>" id="tasted"/></td>
    <td><input type="text" name="comments[<?php echo $i;?>][rating]" <?php echo $row['rating'];?>/></td>
    <td><textarea name='comments[<?php echo $i;?>][comment]' id='comment' cols="350"><?php echo $row['comment'];?></textarea></td>
</tr>

データの配列を含むと呼ばれるcomments配列を作成します。したがって、2 つの行がある場合、次のような配列が得られます。

array(
    1 => array(
        'id' => '..',
        'brand' => '..',
        'tasted' => '..',
        'rating' => '..',
        'comment' => '..'
    ),
    2 => array(
        'id' => '..',
        'brand' => '..',
        'tasted' => '..',
        'rating' => '..',
        'comment' => '..'
    )
);

コントローラーで必要なのは次のとおりです。

 $this->model->update_rb($this->input->post('comments'));

ただし、検証を忘れないでください。

于 2012-12-14T09:48:32.230 に答える