我试图创建一个简单的搜索页面,从表单中获取值。在该表格中,我有特定日期的字段,两个字段用于选择两个日期以在两个选定日期之间进行搜索,以及ID字段以按ID搜索。在运行我的代码时,只执行第一个if语句并按预期运行,但如果我在该字段中保留该日期值为空并在其后的字段中设置值,则代码不会执行任何操作并给出处理错误消息"您的搜索没有结果"。
if (isset($_POST['date_search_on']))
{ $search_on = $_POST['date_search_on'];
$qry = " SELECT * FROM table WHERE date = '$search_on' ";
$result = mysqli_query ($con, $qry);
if (mysqli_num_rows($result) <=0) {
echo 'There are no results for your search'; }
} // end first if
else if (isset($_POST['date_search_after'],$_POST['date_search_before'] )) {
$search_after = $_POST['date_search_after'];
$search_before = $_POST ['date_search_before'];
$qry = " SELECT * FROM table WHERE date BETWEEN '$search_after' AND '$search_before'";
$result = mysqli_query ($con, $qry);
if (mysqli_num_rows($result) <=0) {
echo 'There are no results for your search'; }
} // end 2nd if
else if (isset($_POST['id_search'])) {
$search_id = mysqli_real_escape_string($con,$_POST['id_search']);
$qry = " SELECT * FROM table WHERE id = '$search_id'";
$result = mysqli_query ($con, $qry);
if (mysqli_num_rows($result) <=0) {
echo 'There are no results for your search'; }
} //end 3rd if
我尝试用if(isset())
替换if ($_POST['variable']) !==NULL
并得到相同的结果。谢谢!
按要求添加表单代码
<form action="#" method="POST">
<div class="form-group">
<label for="date_search_on">Show results sent on</label>
<input type="date" id="date_search_on" class="form-control" name="date_search_on">
</div>
<div class="form-group">
<h3>Show sent</h3>
<label for="date_search_after">After</label>
<input type="date" id="date_search_after" class="form-control" name="date_search_after" >
</div>
<div class="form-group">
<label for="date_search_before">and before</label>
<input type="date" id="date_search_before" class="form-control" name="date_search_before">
</div>
<div class="form-group">
<label for="id"> ID</label>
<input type="text" id="id" class="form-control" name="id_search">
</div>
<br>
<input type="submit" value="Search" class="btn btn-primary" name="submit"></input>
</form>
答案 0 :(得分:-1)
尝试:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {}
检查您的脚本是否已发布。
如果传递了其他数据,$ _POST将不为空,否则为空。
您可以使用空方法检查它是否包含数据。
if ( !empty($_POST) ) {}
答案 1 :(得分:-1)
使用空,
,而不是 issetif (!empty($_POST['date_search_on']))
如果尚未设置字段,或者包含null,false或空字符串, empty 函数将返回true。
请注意,此测试不为空,因为如果该值不为空,则要使用该值。
可能正在发送数据,但如果您将输入留空,则会将其设置为空。
答案 2 :(得分:-1)
错误引发,因为当date_search_on
为空时,db查询将lead_date
的值与''
进行比较,然后因为它找不到行,所以首先计算为true。
您应该先更改if
的条件检查,以便在if
为空时让其测试其他date_search_on
。所以改变你的$qry
作业如下:
$search_on = trim($_POST['date_search_on']);
if (empty($qry)){
$qry = " SELECT * FROM leads";
}else{
$qry = " SELECT * FROM leads WHERE lead_date = '$search_on' ";
}
$result = mysqli_query ($con, $qry);
if (mysqli_num_rows($result) <=0) {
echo 'There are no results for your search';
}