【发布时间】:2014-10-28 04:03:49
【问题描述】:
我正在为我的 PHP1 课程分配作业,我们正在处理粘性表格,我的作业是编写一个订单表格,验证输入了姓名和选择了电话型号,如果两者都已填写,则数据返回到页面,如果缺少一个或两个,则会将错误消息发送回页面。附件是可选的。目前,如果没有选择电话并且在表单中输入了姓名,脚本将发布错误,如果两者都缺失,它将发布错误,但如果姓名缺失并且选择了电话,则它不会标记为错误并继续将脚本处理回页面。我试图纠正一个函数来验证用户名文本字段和电话单选按钮是否被选中为真,或者如果为假则显示错误消息。谁能告诉我为什么我的表单在只选择手机型号并且名称字段为空白时处理数据?
脚本(订单):
<!DOCTYPE html>
<html>
<head>
<title>Order Form</title>
</head>
<body>
<h1>Order Your Smartphone</h1>
<?php
/**
* Created by PhpStorm.
* User: Daniel Vermillion
* Date: 10/27/2014
* Time: 7:59 PM
*/
$isValid = false;
//function totalAcc() {
// foreach($_POST['acc'] as $item) {
// $accPrice[] = $item;
// }
// array_sum($accPrice);
// return $accPrice;
//}
//function totalCost() {
// $subtotal = $phonePrice + $accPrice;
// $tax = 0.08;
// $taxTotal = $subtotal * $tax;
// $total = $subtotal + $taxTotal;
// return $subtotal;
// return $taxTotal;
// return $total;
//}
function validData() {
if(isset($_POST['userName']) && isset($_POST['phones'])) {
return true;
}
else {
return false;
}
}
function calcResults() {
$isValid = validData();
if($isValid) {
echo "Full Name: {$_POST['userName']} <br />";
echo "Phone Model: {$_POST['phones']} <br />";
echo "Accessories: {$_POST['acc']} <br />";
// echo "Subtotal: $subtotal <br />";
// echo "Tax: '$taxTotal' <br />";
// echo "Total Cost: $total <br />";
}
else {
echo "Please enter your name and select a phone model.";
}
}
?>
<form method="post" action="index.php">
Full Name: <input type="text" name="userName" value="<?php if(isset($_POST['userName'])) echo $_POST['userName']; ?>" /><br />
<h4>Add Smartphone</h4>
<table cellspacing="4" cellpadding="4" border="1">
<tr>
<td></td>
<td>Phone</td>
<td>Model</td>
<td>Storage</td>
<td>Price</td>
</tr>
<tr>
<td><input type="radio" name="phones" value="SP8" <?php if(isset($_POST['phones']) && $_POST['phones'] == "SP8") echo 'checked'; ?> /></td>
<td>SuperPhone</td>
<td>SP8</td>
<td>8 GB</td>
<td>$400</td>
</tr>
<tr>
<td><input type="radio" name="phones" value="SP16" <?php if(isset($_POST['phones']) && $_POST['phones'] == "SP16") echo 'checked'; ?> /></td>
<td>SuperPhone</td>
<td>SP16</td>
<td>16 GB</td>
<td>$450</td>
</tr>
<tr>
<td><input type="radio" name="phones" value="MP8" <?php if(isset($_POST['phones']) && $_POST['phones'] == "MP8") echo 'checked'; ?> /></td>
<td>MegaPhone</td>
<td>MP8</td>
<td>8 GB</td>
<td>$500</td>
</tr>
<tr>
<td><input type="radio" name="phones" value="MP16" <?php if(isset($_POST['phones']) && $_POST['phones'] == "MP16") echo 'checked'; ?> /></td>
<td>MegaPhone</td>
<td>MP16</td>
<td>16 GB</td>
<td>$550</td>
</tr>
</table>
<h4>Add Accessories</h4>
<table cellspacing="4" cellpadding="4" border="1">
<tr>
<td></td>
<td>Accessory</td>
<td>Price</td>
</tr>
<tr>
<td><input type="checkbox" name="acc[]" value="handstrap" <?php if(isset($_POST['acc']) && in_array('handstrap', $_POST['acc'])) echo ' checked'; ?> /></td>
<td>Hand Strap</td>
<td>$6.25</td>
</tr>
<tr>
<td><input type="checkbox" name="acc[]" value="leathercase" <?php if(isset($_POST['acc']) && in_array('leathercase', $_POST['acc'])) echo ' checked'; ?> /></td>
<td>Leather Case</td>
<td>$14.50</td>
</tr>
<tr>
<td><input type="checkbox" name="acc[]" value="headphones" <?php if(isset($_POST['acc']) && in_array('headphones', $_POST['acc'])) echo ' checked'; ?> /></td>
<td>Headphones</td>
<td>$18.75</td>
</tr>
</table>
<br />
<input type="submit" name="submit" value="Click to Finalize Order" /><br /><br />
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
calcResults();
}
?>
</body>
</html>
【问题讨论】:
-
试试
!empty()而不是isset。
标签: php forms validation post