即使满足条件,也会执行elseif行

时间:2016-04-26 17:26:34

标签: php html

PHP

<?php

if (isset($_POST['calculate'])) {
        $seller= $_POST['seller'];
        $buyer= $_POST['buyer'];
        $amount= $_POST['amount'];
        $rate= $_POST['tax_rate'];



            if (empty(($seller && $buyer) && ($amount && $rate) )){
                echo $warning= "Please full out the fields properly";
            }elseif(!is_int($amount && $rate)){
                echo $warning ="please input numbers on Tax Rate & Amount";


            }
    }
}

我无法理解错误是在html中还是在php中?

税额必须是整数值,但为什么要传递表格不处理的条件。

HTML

?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="styletax.css">
</head>
<body>
<--! tax calculator-->
<div class="taxform">
    <fieldset>
        <form action="calculator_processor.php" method="post">
            <div class="formcontent">
                <label for="sellername">Seller Name</label>
                <input type="text" id="sellername" name="seller"></input>

                <label for="buyerrname">Buyer Name</label>
                <input type="text" id="buyername" name="buyer"></input>

                <label for="Product Type">Product Type</label>
                <select name="product">
                    <option value="jeans">Jeans</option>
                    <option value="tshirt">Tshirt</option>
                    <option value="sunglass">Sunglass</option>
                    <option value="mobile">Mobile</option>
                    <option value="other">Other</option>
                </select> <br/>
                <?php //echo $warning; ?>
                <label for="money">Total Amount</label>
                <input type="text" id="money" name="amount"></input>
                <?php //echo $warning; ?>
                <label for="taxrate">Tax Rate</label>
                <input type="text" name="tax_rate" id="taxrate"></input>
                <div class="btn">
                    <input type="submit" name="calculate" class="button" value="Calculate Tax"></input>
                </div>
            </div>
        </form>

    </fieldset>

</div>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

is_int($amount && $rate)未测试$amount$rate是否为整数。它正在测试表达式$amount && $rate的值是否为整数。 &&是布尔值AND,如果两个操作数都是真实的,则返回true,否则返回false。由于结果是布尔值,而不是整数,is_int()将始终返回false

另一个问题是表单输入总是字符串,而不是数字。如果要测试字符串是否与数字相符,则必须使用is_numeric,而不是is_int。所以代码应该是:

elseif (!is_numeric($amount) || !is_numeric($rate))

测试每个变量。

同样,如果要测试多个变量是否为空,请使用

if (empty($seller) || empty($buyer) || empty($amount) || empty($rate)) {
    echo $warning = "Please fill out all the fields properly";
}