我有下面的代码。我希望它停止脚本并在三个选定的输入字段旁边显示错误。但是,当您将其中一个必填字段留空并点击提交时,表单仍会进行处理。如果我用die()替换开头的$error[],它会正常停止,但当我试图在表单页面上显示它们时,它就不起作用,并提交/运行查询。非常感谢您的帮助!
<?php
if(!empty($_POST))
{
// If there was an $error, keep submitted values
$submitted_firstname = htmlentities($_POST['firstname'], ENT_QUOTES, 'UTF-8');
$submitted_lastname = htmlentities($_POST['lastname'], ENT_QUOTES, 'UTF-8');
$submitted_phone1 = htmlentities($_POST['phone1'], ENT_QUOTES, 'UTF-8');
$submitted_phone2 = htmlentities($_POST['phone2'], ENT_QUOTES, 'UTF-8');
$submitted_ext1 = htmlentities($_POST['ext1'], ENT_QUOTES, 'UTF-8');
$submitted_ext2 = htmlentities($_POST['ext2'], ENT_QUOTES, 'UTF-8');
$submitted_email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
$submitted_street = htmlentities($_POST['street'], ENT_QUOTES, 'UTF-8');
$submitted_city = htmlentities($_POST['city'], ENT_QUOTES, 'UTF-8');
$submitted_zip = htmlentities($_POST['zip'], ENT_QUOTES, 'UTF-8');
// Ensure that the user has entered a non-empty firstname, lastname, and one phone
if(empty($_POST['firstname']))
{
$errors['addcust_fname'] = '* First name required';
}
if(empty($_POST['lastname']))
{
$errors['addcust_lname'] = '* Last name required';
}
if(empty($_POST['phone1']))
{
$errors['addcust_phone'] = '* One phone required';
}
$state = $_POST['state'];
$query = "
INSERT INTO customers (
firstname,
lastname,
phone1,
phone2,
ext1,
ext2,
email,
street,
city,
state,
zip,
joindate
) VALUES (
:firstname,
:lastname,
:phone1,
:phone2,
:ext1,
:ext2,
:email,
:street,
:city,
:state,
:zip,
NOW()
)
";
$query_params = array(
':firstname' => $_POST['firstname'],
':lastname' => $_POST['lastname'],
':phone1' => $_POST['phone1'],
':phone2' => $_POST['phone2'],
':ext1' => $_POST['ext1'],
':ext2' => $_POST['ext2'],
':email' => $_POST['email'],
':street' => $_POST['street'],
':city' => $_POST['city'],
':state' => $_POST['state'],
':zip' => $_POST['zip']
);
try
{
// Execute the query to create the user
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
// This redirects the user back to the login page after they register
header("Location: main.php");
die("Redirecting to main.php");
}
?>
<?php include('common/header2.php'); ?>
<body align="center">
<div align="center">
<div id="header">
<div id="logo"><h1><span><?php echo($company); ?></span><em>/</em><strong>Portal</strong></h1></div>
<div><span id="tick2"></span></div>
<div><?php echo date("Y/m/d"); ?></div>
</div>
<?php
// Get top menu
require("common/top_menu.php");
?>
<div style="height: auto" id="main-content-section">
<h2>Add New Customer</h2>
<div align="center" id="addcustdiv">
<form action="add_customer.php" method="post">
First Name: <input class="search-input" type="text" name="firstname" value=" <?php echo $submitted_firstname; ?>" /> <?php if($_POST && isset($errors['addcust_firstname'])) { echo $errors['addcust_firstname'] ; } ?>
<br><br>Last Name: <input class="search-input" type="text" name="lastname" value="<?php echo $submitted_lastname; ?>" /> <?php if($_POST && isset($errors['addcust_lastname'])) { echo $errors['addcust_lastname'] ; } ?>
<br><br>Phone 1: <input class="search-input" size="10" type="text" name="phone1" value="<?php echo $submitted_phone1; ?>" /> Ext: <input class="search-input" size="3" type="text" name="ext1" value="<?php echo $submitted_ext1; ?>" /> <?php if($_POST && isset($errors['addcust_phone'])) { echo $errors['addcust_phone'] ; } ?>
<br><br>Phone 2: <input class="search-input" size="10" type="text" name="phone2" value="<?php echo $submitted_phone2; ?>" /> Ext: <input class="search-input" size="3" type="text" name="ext2" value="<?php echo $submitted_ext2; ?>" />
<br><br>E-Mail: <input class="search-input" type="text" name="email" value=" <?php echo $submitted_email; ?>" />
<br><br>Street: <input class="search-input" type="text" name="street" value="<?php echo $submitted_street; ?>" />
<br><br>City: <input class="search-input" type="text" name="city" value="<? php echo $submitted_city; ?>" /> State: <select class="search-input" name="state">
<option value="CT">CT</option>
<option value="AL">AL</option>
<option value="AK">AK</option>
<option value="AZ">AZ</option>
<option value="AR">AR</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="CT">CT</option>
<option value="DE">DE</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="HI">HI</option>
<option value="ID">ID</option>
<option value="IL">IL</option>
<option value="IN">IN</option>
<option value="IA">IA</option>
<option value="KS">KS</option>
<option value="KY">KY</option>
<option value="LA">LA</option>
<option value="ME">ME</option>
<option value="MD">MD</option>
<option value="MA">MA</option>
<option value="MI">MI</option>
<option value="MN">MN</option>
<option value="MS">MS</option>
<option value="MO">MO</option>
<option value="MT">MT</option>
<option value="NE">NE</option>
<option value="NV">NV</option>
<option value="NH">NH</option>
<option value="NJ">NJ</option>
<option value="NM">NM</option>
<option value="NY">NY</option>
<option value="NC">NC</option>
<option value="ND">ND</option>
<option value="OH">OH</option>
<option value="OK">OK</option>
<option value="OR">OR</option>
<option value="PA">PA</option>
<option value="RI">RI</option>
<option value="SC">SC</option>
<option value="SD">SD</option>
<option value="TN">TN</option>
<option value="TX">TX</option>
<option value="UT">UT</option>
<option value="VT">VT</option>
<option value="VA">VA</option>
<option value="WA">WA</option>
<option value="WV">WV</option>
<option value="WI">WI</option>
<option value="WY">WY</option>
<option value="DC">DC</option>
</select>
<br><br>Zip: <input class="search-input" type="text" name="zip" value="<?php echo $submitted_zip; ?>" />
<br><br><input type="submit" width="20" class="login-submit" value="Add Customer" />
</form>
</div>
</div>
<?php include('common/footer.php') ?>
将所有表单处理置于if
条件下,该条件将检查错误数组长度:
if(!count($errors)) {
// do your form processing
// This redirects the user back to the login page after they register
header("Location: main.php");
die("Redirecting to main.php");
}
请确保通过将$errors
变量设置为数组来初始化它,否则会出现错误($errors = array()
)。
您可以检查$errors大小,如果它是空的,则运行sql命令:
if(sizeof($errors)<1){
$state = $_POST['state'];
//run SQL commands ...
die("Redirecting to main.php");
}
//rest of the code