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>
答案 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";
}