(PHP)为什么这个索引未定义?

时间:2014-07-07 19:45:04

标签: php html forms submit

我已经在这个问题上喋喋不休几个小时了。我不确定问题出在哪里。我做了一个提交表单,并被告知未定义的索引,尽管在我的代码中使用它几次并且没有问题。问题是"数量"在第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行显示为未定义。

1 个答案:

答案 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"...