1

我目前正在使用 CI 学习购物车系统并遇到了一些问题

A PHP Error was encountered 
Severity: Notice
Message: Undefined offset: 2
Filename: models/main_model.php
Line Number: 241

这是代码:

控制器:

function update_cart(){
    $this->main_model->validate_update_cart();
    redirect('cart');
}

模型:

function validate_update_cart(){

    // Get the total number of items in cart
    $total = $this->cart->total_items();

    // Retrieve the posted information
    $item = $this->input->post('rowid');
    $qty = $this->input->post('qty');

    // Cycle true all items and update them
    for($i=0;$i < $total;$i++)
    {
        // Create an array with the products rowid's and quantities. 
        $data = array(
           'rowid' => $item[$i], //this is line 241
           'qty'   => $qty[$i]
        );

        // Update the cart with the new information
        $this->cart->update($data);
    }

}

看法:

<div id="main">
<?php if(!$this->cart->contents()):
    echo 'You don\'t have any items yet.';
else:
?>

<?php echo form_open('cart/update_cart'); ?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <thead>
        <tr>
            <td style="background-color:yellow;">Qty</td>
            <td style="background-color:yellow;">Item No/td>
            <td style="background-color:yellow;">Description</td>
            <td style="background-color:yellow;">Color</td>
            <td style="background-color:yellow;">Price</td>
            <td style="background-color:yellow;">Sub-Total</td>
            <td style="background-color:yellow;">Delete</td>

        </tr>
    </thead>
    <tbody>
        <?php $i = 1; ?>
        <?php foreach($this->cart->contents() as $items): ?>

        <?php echo form_hidden('rowid[]', $items['rowid']); ?>
        <tr <?php if($i&1){ echo 'class="alt"'; }?>>
            <td>
                <?php echo form_input(array('name' => 'qty[]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?>
            </td>
            <td><a style="font-size:11px;"><?php echo $items['id']?></a></td>
            <td><a style="font-size:11px;"><?php echo $items['name']; ?></a></td>
            <td><a style="font-size:11px;"><?php echo $items['warna']?></a></td>
            <td><a style="font-size:11px;">Rp. <?php echo number_format($items['price'],0,",",".");?></a></td>
            <td><a style="font-size:11px;">Rp. <?php echo number_format($items['subtotal'],0,",",".");?></a></td>
            <td><a href="<?= base_url();?>cart/delete/<?= $items['rowid'];?>"><img src="<?= base_url();?>assets/image/hapus.png"></img></a></td>
        </tr>

        <?php $i++; ?>
        <?php endforeach; ?>
        <tr>
            <td colspan="5"><strong>Total</strong></td>
            <td colspan="2"><a align="right"><?php echo $this->cart->format_number($this->cart->total()); ?></a></td>
        </tr>
    </tbody>
</table>

<p><?php echo "<input type='submit' class='Button' value='Update'>";?></p>
<?php 
echo form_close(); 
endif;
?>

编辑视图,完整代码。当我单击更新按钮时,它在上面返回错误。谢谢。

4

2 回答 2

2

似乎返回的东西与and数组$this->cart->total_items()中的总项目不同。稍后,您将使用此结果来迭代这些数组,并且循环变量 ( ) 超出了数组的边界。$item$qty$i

将循环更改为:

for($i=0;$i < count($item);$i++)

如果您愿意,您可以选择count($qty),前提是两个数组包含相同数量的元素(无论如何都必须为真,以便整个算法工作)。

于 2013-10-30T09:42:23.677 回答
-2

当您收到您应该使用的帖子时

rowid[] 而不是 rowid

于 2013-10-30T08:13:08.817 回答