PHP Codeigniter Tanımsız Ofset Hata

2 Cevap php

Ben bir Codeigniter alışveriş sepeti inşa ediyorum. Sepeti ayrıntıları sayfada ben kullanıcı bir ürünün gerekli miktarda yazın sağlayan bir form giriş alanı var ve bir güncelleme fonksiyonu için bilgi göndermek için düğmeye gönderin.

Sadece bir madde sepetinde olduğunda, miktar her şeyi güncellerken zaman olması gerektiği gibi çalışır. Model (dizi içinde özellikle iki satır) aşağıdaki kodu hata: Ancak, birden fazla öğe bir iş kaleminin miktarı değişen ve bir 'Tanımsız Ofset 1 sonuç göndermek tıklayarak, var:

function validate_update_cart()
    { 
        $total = $this->cart->total_items();  

        $item = $this->input->post('rowid');  
        $qty = $this->input->post('qty');  

        for($i=0;$i < $total;$i++)  
        {  

            $data = array(  
                  'rowid' => $item[$i], 
                  'qty'   => $qty[$i]  
               );  

            $this->cart->update($data);  
        }
    }

Bu yukarıdaki başvurduğu Görünüm kodu:

<form action="<?php echo base_url(); ?>home/update" method="post">
        <div><input type="hidden" name="rowid[]" value="<?php echo $item['rowid']; ?>"/></div>
        <div><input type="text" name="qty[]" value="<?php echo $item['qty']; ?>" maxlength="2" class="chg-qty"/></div>
        <div><input type="submit" value="update" class="update-quantity"/></div>
</form>

Ve bu Denetleyicisi'dir:

function update()
    {
    $this->products_model->validate_update_cart();  
        redirect('cart');
    }

Bu neden oluyor herkes açıklayabilir miyiz?

Çok teşekkürler,

Mat

2 Cevap

Ben sorun olması gerekir olduğuna inanıyorum

<form action="<?php echo base_url(); ?>home/update" method="post">
        <div><input type="hidden" name="rowid[]" value="<?php echo $item['rowid']; ?>"/></div>
        <div><input type="hidden" name="rowid[]" value="<?php echo $item['rowid']; ?>"/></div>

        <div><input type="text" name="qty[]" value="<?php echo $item['qty']; ?>" maxlength="2" class="chg-qty"/></div>
        <div><input type="text" name="qty[]" value="<?php echo $item['qty']; ?>" maxlength="2" class="chg-qty"/></div>

        <div><input type="submit" value="update" class="update-quantity"/></div>
</form>

Yani, rowid ve adet için 2 girişleri.

Bu link HTML girişleri ile standart ve ilişkisel hem de dizileri kullanarak örnekleri sağlar.

EDIT based on OP feedback:

Bu benim çok atıfta örnek oldu:

<label><input type="checkbox" name="choice[]" value="1"/> 1</label>
<label><input type="checkbox" name="choice[]" value="2"/> 2</label>
<!-- etc... -->

// meanwhile, on the server...
$choice = $this->input->post('choice');
print_r($choice); // Array ( [0] => 1 [1] => 2 );

Başka bir örnek:

<form method="post" action="">
  <input maxlength="30" name="friend[]" size="30" type="text" />
  <input maxlength="30" name="friend[]" size="30" type="text" />
  <input maxlength="30" name="friend[]" size="30" type="text" />
  <input type="submit" value="Submit" />
</form>

// *****  Server-Side PHP: *****

// Loop through the friend array
foreach ($_POST['friend'] as $value) {
    if ($value) { echo $value."<br />"; }
}

Örnekler aynı bir girişi kullanarak nerede fark "vesaire []" geri dizi gelmesini bekliyoruz her değer için. Senin kodunda, sizin görünümünde bir rowid [] ve bir Adet Adet [] girişi var. Tek bir eleman için bu dizideki tanımlanan bir eleman b / c çalışacaktır. 2 öğe var ve görünüşe göre olan var olmayan her dizideki ikinci elemanı (yani 1) erişmeye çalışıyor döngü sonra öğelerin doğru sayısını temsil toplam ürün değişkeni güncelliyoruz ama zaman Eğer alıyorsanız neden hata "Tanımsız 1 Offset".

yerine

 for($i=0;$i < $total;$i++) 

Bu kullanabilirsiniz

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