Php 提交表单时不转到错误消息
我使用此代码验证选择框值。但我的问题是,当我提交表单时,没有在选择框中选择一个选项,它不会显示错误消息Php 提交表单时不转到错误消息,php,Php,我使用此代码验证选择框值。但我的问题是,当我提交表单时,没有在选择框中选择一个选项,它不会显示错误消息 if ( !isset( $_POST['how_hear'])) { $errors[] = 'Select an option from How did you hear us select box'; } else { $howHear = $_POST['how_hear']; } 这是我的选择框 $howHe
if ( !isset( $_POST['how_hear'])) {
$errors[] = 'Select an option from How did you hear us select box';
} else {
$howHear = $_POST['how_hear'];
}
这是我的选择框
$howHear = array( 1 => 'option value 01',
'option value 02',
'option value 03',
'option value 04',
'option value 05',
'option value 06',
'option value 07',
'option value 08'
);
echo "<select name='how_hear'>
<option>--Select an Option--</option>\n";
foreach ( $howHear AS $key => $value) {
echo "<option value='{$key}'";
// Check for stickyness:
if ( $_POST['how_hear'] == $key){
echo " selected='selected'";
}
echo ">$value</option>\n";
}
echo "</select>\n";
$howHear=array(1=>“选项值01”,
“期权价值02”,
“期权价值03”,
“期权价值04”,
“期权价值05”,
“期权价值06”,
“期权价值07”,
“选项值08”
);
回声“
--选择一个选项--\n”;
foreach($howHear作为$key=>$value){
回显“$value\n”;
}
回音“\n”;
谁能告诉我我哪里做错了?
谢谢。问题似乎在于如何设置听力。默认值是
--Select an Option--
检查一下
$_POST['how_hear'] != "--Select an Option--"
或者,更新select字段,使默认值为0(这是正确的做法)。然后检查该值是否为非零
<option value="0">--Select an Option--</option>
——选择一个选项--
您应该添加另一个条件
if ( !isset( $_POST['how_hear']) || $_POST['how_hear'] == "") {
$errors[] = 'Select an option from How did you hear us select box';
} else {
$howHear = $_POST['how_hear'];
}
试一试
我对你的代码和更新做了一些更改
<?php
if (isset($_POST['submit']))
{
if ($_POST['how_hear'] == 0)
{
echo "error";
$errors[] = 'Select an option from How did you hear us select box';
}
else
{
echo "Hello";
$howHear = $_POST['how_hear'];
}
}
echo "<form method='post' action='#'>";
$howHear = array( 1 => 'option value 01',
'option value 02',
'option value 03',
'option value 04',
'option value 05',
'option value 06',
'option value 07',
'option value 08'
);
echo "<select name='how_hear'>
<option>--Select an Option--</option>\n";
foreach ( $howHear AS $key => $value)
{
echo "<option value='{$key}'>";
echo "$value</option>\n";
}
echo "</select>\n";
echo "<input type='submit' name='submit' value='submit'/>";
echo "</form>";
?>
当您提交而不选择选择框时,您在die($\u POST['how\u hear'])
中得到了什么?我需要将此调试代码放在哪里。我试着把它放入我的验证代码中。但是它不会显示任何内容。您可以将它放在if(!isset($\u POST['how\u hear']){
之前。我认为$\u POST['how\u hear']永远不会等同于“”。如果我没有弄错,它将在选项标记之间包含文本。我尝试过类似这样的操作。。if(!isset($\u POST['how\u hear'])&$\u POST['how\u hear']!=“--选择一个选项--”){将&&改为| |。按照你的方式,你说的是“如果没有设置how|hear,那么它等于某物”。这在逻辑上是没有意义的。但是,你最好将选项值设置为0,并按如下方式进行测试:If(!isset($u POST['how|u hear'])|$u POST['how|u hear']==0{…}谢谢。它工作正常。我在代码中犯了一个错误,我使用它就像$_POST['how_hear']='0'@TharangaNuwan“0”I字符串,0是int..非常欢迎:)
if ( $_POST['how_hear'] == 0) {
// error message
}
<?php
if (isset($_POST['submit']))
{
if ($_POST['how_hear'] == 0)
{
echo "error";
$errors[] = 'Select an option from How did you hear us select box';
}
else
{
echo "Hello";
$howHear = $_POST['how_hear'];
}
}
echo "<form method='post' action='#'>";
$howHear = array( 1 => 'option value 01',
'option value 02',
'option value 03',
'option value 04',
'option value 05',
'option value 06',
'option value 07',
'option value 08'
);
echo "<select name='how_hear'>
<option>--Select an Option--</option>\n";
foreach ( $howHear AS $key => $value)
{
echo "<option value='{$key}'>";
echo "$value</option>\n";
}
echo "</select>\n";
echo "<input type='submit' name='submit' value='submit'/>";
echo "</form>";
?>