我已经在这个问题上喋喋不休几个小时了。我不确定问题出在哪里。我做了一个提交表单,并被告知未定义的索引,尽管在我的代码中使用它几次并且没有问题。问题是"数量"在第5行,也为foreach()
提供了无效的参数。
<?php
if(isset($_POST['submit'])){
foreach($_POST['quantity'] as $key => $val) {
if($val==0) {
unset($_SESSION['Cart'][$key]);
}
else {
$_SESSION['Cart'][$key]['quantity']=$val;
}
}
}
?>
表单使用一个简单的提交按钮来更新会话中存储的值(我试图通过纯文本进行编辑)。
这是表格:
<form method="post" action="index.php?page=Cart">
<table>
<tr>
<th>Product name</th>
<th>Quantity</th>
</tr>
<?php
$sql="SELECT * FROM products where Product_ID IN (";
foreach($_SESSION['Cart'] as $id => $value) {
$sql.=$id.",";
}
$sql=substr($sql, 0, -1).") ORDER BY Category ASC";
$query=mysql_query($sql);
$totalquantity=0;
while($row=mysql_fetch_array($query)) {
$subtotal=$_SESSION['Cart'][$row['Product_ID']['quantity']]['quantity'];
$totalquantity+=$subtotal;
?>
<tr>
<td><?php echo $row['Name'] ?></td>
<td><input = type="text" name="uantity [<?php echo $row['Product_ID'] ?>]" size="5" value="<?php echo $_SESSION['Cart'][$row['Product_ID']['quantity']]['quantity'] ?>"/> </td>
</tr>
<?php
}
?>
</table>
<table>
<hr />
<tr>
<td><font color="Crimson"><b>Total Quantity:</b></font></td>
<td><font color="Crimson"><b><?php echo $totalquantity ?></b></td>
</tr>
</table>
<button type="submit" name="submit">Update selection</button>
</form>
&#34;数量&#34;有多种用途。工作完全正常,例如在文本框中添加总数量和显示数量,但它在第5行显示为未定义。
答案 0 :(得分:0)
可能值得更新一下:
if(isset($_POST['submit'])){
foreach($_POST['quantity'] as $key => $val) {
if($val==0) {
unset($_SESSION['Cart'][$key]);
}else{
$_SESSION['Cart'][$key]['quantity']=$val;
}
}
}
要:
if ( isset( $_POST['submit'] ) && isset( $_POST['quantity'] ) ) {
foreach( (array) $_POST['quantity'] as $key => $val ) {
if ( $val == 0 ) {
unset( $_SESSION['Cart'][ $key ] );
} else {
$_SESSION['Cart'][ $key ]['quantity'] = $val;
}
}
}
然后修复代码中的小错误。
<td><input = type="text" name="uantity [<?php echo $row['Product_ID'] ?>]"...
<td><input type="text" name="quantity[<?php echo $row['Product_ID'] ?>]" size="5"...