codeigniter undefined offset-Fehler
Ich bin derzeit lernen cart-system mit CI und habe einige Probleme
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 2
Filename: models/main_model.php
Line Number: 241
hier der code:
Controller:
function update_cart(){
$this->main_model->validate_update_cart();
redirect('cart');
}
Modell:
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);
}
}
anzeigen:
<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;
?>
bearbeitet die Ansicht, vollständigen code.
wenn ich auf die update-Schaltfläche, es hat einen Fehler zurückgegeben live vor.
danke.
- Welchen Wert erwarten Sie zu erhalten, aus
$this->input->post('rowid')
? - die rowid der Elemente
- in welchem format? wie ein array? können Sie ein Beispiel geben, das Wert?
- was ist der Wert von
$item
? - Können Sie uns zeigen das generierte markup? Vielleicht gibt es einen nicht geschlossenen tag VOR der Ansicht-snippet, das Sie uns zeigte,...?
- bearbeitet die Ansicht
- Wie funktioniert
$this->cart->total_items()
Arbeit? - wie es scheint, gibt es so etwas wie die gesamten Artikel, die ich hinzufügen in den Warenkorb gelegt. zum Beispiel wenn ich 300 der Menge ein Element gibt es 300
- Aber das spiegelt die Anzahl der Elemente, bevor das Formular gepostet wird, richtig?
- versucht print_r($items) und ich habe diese Array ( [rowid] => 0858ccdaef1d711a2eff18911cf79c51 [id] => 200508000100 [qty] => 300 [warna] => [Preis] => 35000.0000 [name] => AKKU HI-TECH H-38 [Zwischensumme] => 10500000 ) 1
- Die zweite Liste ist nicht so relevant für die Fehler. Bitte siehe meine Antwort unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass
$this->cart->total_items()
gibt etwas anderes aus der gesamten Elemente in der$item
und$qty
arrays. Später werden Sie über das Ergebnis iteriert werden diese arrays, und die loop-variable ($i
) über die arrays hinweg.Ändern Sie Ihre Schleife:
Können Sie
count($qty)
wenn Sie es vorziehen, vorausgesetzt, daß die beiden arrays enthalten die gleiche Anzahl von Elementen (das muss wahr sein, jedenfalls, um für den gesamten Algorithmus zu arbeiten).wenn Sie Sie empfangen die post, die Sie verwenden sollten,
rowid[] anstelle von rowid