2016-04-24 131 views
1

我有以下形式:表没有显示选项时,选择的选项中选择错误消息

<form action="#" method="POST" enctype="multipart/form-data"> 
    from: 
    <select name="age_from" id="age_a" onchange="checkages_a()"> 
     <option value=""></option> 
     <?php 
     for($i = 17; $i <= 50; ++$i) { 
      echo "\t", '<option value="', $i. '">', $i, '</option>', "\n"; 
     } 
     ?> 
    </select> 
    to: 
    <select name="age_to" id="age_b" onchange="checkages_b()"> 
     <option value=""></option> 
     <?php 
     for($i = 18; $i <= 50; ++$i) { 
      echo "\t", '<option value="', $i, '">', $i, '</option>', "\n"; 
     } 
     ?> 
    </select> 
    <input type="radio" name="gender" value="male">Male</input> <br /> 
    <input type="radio" name="gender" value="female">Female</input><br /> 
    <input type="submit" class="btn btn-info" 
     name="submit_form" value="Click to start chat! " /> 

它的工作方式是,用户可以选择从gender的两个选项之一,age和搜索一个用户。两个选项都不需要完成搜索。

但是,如果没有一个选项被选中,我希望它留在当前页面(`random_chat.php),并呼应的消息。

这里是我的方法:

$refined_gender = isset($_POST['gender']) ? escape($_POST['gender']) : ''; 
$age_from  = isset($_POST['age_from']) ? escape($_POST['age_from']) : ''; 
$age_to   = isset($_POST['age_to']) ? escape($_POST['age_to']) : ''; 

if (isset($_POST['submit_form'])){ 

if (empty ($refined_gender) || empty($age_from) || empty ($age_to)) { 
    echo "<div class='no_user'><p> Please apply at least one of the filters above. </p> </div>"; 
} else { 
// search user 
} 

目前,当我有两个搜索选项空,消息回声,这是很好的。但该消息也回声,当我寻找男性用户,还是有年龄不是空的,这是不应该的。

+3

你明白'||'和''&&的区别? –

回答

1

您需要更改||&&什么,(其他的一些改变也表示为注释): -

<form method="POST" enctype="multipart/form-data"> <!-- remove action ='#' --> 
from: 
<select name="age_from" id="age_a" onchange="checkages_a()"> 
    <option value=""></option> 
    <?php 
     for($i = 17; $i <= 50; ++$i) { 
      if(isset($_POST['age_from']) && $_POST['age_from'] == $i){ // to make selected value to be selected even after form submit 
       echo "\t", '<option value="', $i. '" selected ="selected">', $i, '</option>', "\n"; 
      }else{ 
       echo "\t", '<option value="', $i. '">', $i, '</option>', "\n"; 
      } 
     } 
    ?> 
</select> 
to: 
<select name="age_to" id="age_b" onchange="checkages_b()"> 
    <option value=""></option> 
    <?php 
     for($i = 18; $i <= 50; ++$i) { 
      if(isset($_POST['age_to']) && $_POST['age_to'] == $i){// to make selected value to be selected even after form submit 
       echo "\t", '<option value="', $i. '" selected ="selected">', $i, '</option>', "\n"; 
      }else{ 
       echo "\t", '<option value="', $i. '">', $i, '</option>', "\n"; 
      } 
     } 
    ?> 
</select> 
<input type="radio" name="gender" value="male">Male</input> <br /> 
<input type="radio" name="gender" value="female">Female</input><br /> 
<input type="submit" class="btn btn-info" name="submit_form" value="Click to start chat! " /> 
<form> 

<?php 

$refined_gender = isset($_POST['gender']) ? $_POST['gender'] : ''; // escape gives me undefined function error at my end so i removed it, but if it is working at your end thhen keep it up as it is. 
$age_from  = isset($_POST['age_from']) ? $_POST['age_from'] : ''; 
$age_to   = isset($_POST['age_to']) ? $_POST['age_to'] : ''; 

if (empty ($refined_gender) && empty($age_from) && empty ($age_to)) { // check always with form posted value not submit button value and also cange || to && 
    echo "<div class='no_user'><p> Please apply at least one of the filters above. </p> </div>"; 
} else { 
// search user 
} 
?> 
0

的,如果条件不反映你要修复它这样

if (empty ($refined_gender) && empty($age_from) && empty ($age_to)) { 
echo "<div class='no_user'><p> Please apply at least one of the filters above. </p> </div>"; 
} else { // search user } 
+0

?? '&'?你可能想在一遍 – RiggsFolly

+0

感谢一下RiggsFolly。编辑! –

+0

很抱歉,但这个仍然是错的,看看@Anant答案正确解决 – RiggsFolly

相关问题