为什么我的foreach输入未设置?

时间:2014-01-25 23:36:03

标签: php

嘿,我是PHP的新手,所以请怜悯我!

我正在尝试回显$ qty,但它说该变量是一个未定义的变量。

如果你看到我做错了什么,请随时告诉我!

提前致谢!

action.php的:

            foreach ($rows as $row){
              $food = $row['food'];
              $price = $row['price'];
              if(isset($_POST['qty'])){
                $qty = $_POST['qty'];
                echo 'set';
              }else{
                  echo 'unset';

              }
              echo "<tr>
            <td>$food</td>
            <td>$qty</td>
            <td>$price</td>
        </tr>";      
        }

order.php:

            foreach ($rows as $row) {
            $food = $row["food"];
            $price = $row["price"];
            $picture = $row["picture"];
            $description = $row["description"];
            $id = $row['id'];
            echo "<tr>
                    <td><img src='$picture' width='120px' /></td>
                    <td>$food</td>
                    <td>$$price</td>
                    <td><input type='number' min='0' max='10' placeholder='#' name='qty' maxlength='1'></td>
                </tr>";
        }

3 个答案:

答案 0 :(得分:2)

似乎几乎可以确定if(isset($_POST['qty'])){没有通过,因此变量没有给出值。确保将POST数据传递给此脚本

如果我是正确的,你应该在输出中看到“unset”这个词。

您可以提前设置$qty,这样无论如何,它都会有值,或者如果您的if语句为false,则为其赋予不同的值:

//set a default value earlier
$qty = 'This is the default value!';

//or in the if statement
if(isset($_POST['qty'])){
  $qty = $_POST['qty'];
  echo 'set';
} else {
  $qty = 'qty wasn't given a value!';
  echo 'unset';
}

答案 1 :(得分:2)

如果未设置,则尝试使用$qty$_POST['qty']为空时会发生这种情况。您需要做的是在这些情况下为其设置默认值:

if(isset($_POST['qty'])){
    $qty = $_POST['qty'];
}else{
    $qty = 0;
}

或使用三元运算符将其设为单行:

$qty = (isset($_POST['qty'])) ? $_POST['qty'] : 0;

答案 2 :(得分:1)

它未定义,因为您没有POST(表单提交)名为qty的字段