2013-10-30 101 views
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; 
?> 

編輯的視圖,完整代碼。 當我點擊更新按鈕時,它返回上面的錯誤。 謝謝。

+0

你希望從'$ this-> input-> post('rowid')'得到什麼值? – Jeemusu

+0

rowid的項目 – mabbs

+0

以什麼格式?作爲一個數組?你能舉出一個價值的例子嗎? – Jeemusu

回答

2

似乎$this->cart->total_items()回報的東西從$item$qty陣列的全部項目不同。稍後,您使用此結果來迭代這些數組,並且循環變量($i)超出了數組的邊界。

你的循環更改爲:

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

您可以選擇count($qty),如果你喜歡,只要兩個數組包含相同數量的元素(這必須是真實的,無論如何,爲了使整個算法工作)。

+0

它的工作原理,謝謝,但得到了另一個問題$ this-> cart-> total_items()通常會返回我已添加的項目,但它會返回已添加項目的總數量。 – mabbs

+0

我不太關注。它應該返回什麼,它返回的是什麼? (並沒有_usually_,我猜它的行爲是不變的)。 – geomagas

-2

當您收到後,你應該使用

ROWID [],而不是ROWID

+0

does not work ..... – mabbs