Php 未选择筛选选项时显示所有记录
我有一个使用php和MySQL的网站。在我的一个页面上,我有一个select查询,其中有一些参数由表单传递。 在我的表格上有一个Php 未选择筛选选项时显示所有记录,php,html,mysql,Php,Html,Mysql,我有一个使用php和MySQL的网站。在我的一个页面上,我有一个select查询,其中有一些参数由表单传递。 在我的表格上有一个框: <select name="courseCode"> <option value="" selected>Show All</option> <option value="1">Emergency First Aid</option> <option value="2">
框:
<select name="courseCode">
<option value="" selected>Show All</option>
<option value="1">Emergency First Aid</option>
<option value="2">Advanced Burns Training</option>
<option value="3">Fire Safety</option>
<option value="4">Environmental Awareness</option>
</select>
全部展示
紧急急救
高级烧伤训练
消防安全
环境意识
还提供了设置起始日期和截止日期的选项
我面临的问题是在我的php中,当使用ShowAll选项时,它不会获取所有记录,我也不确定编写它的最佳方法
<?php
$min = "2016-01-01"; // Default search criteria for
$max = "2016-12-31"; // date ranges to search
$code;
if (isset($_GET['submit'])) {
$min = $_GET['min'];
$max = $_GET['max'];
$code = $_GET['courseCode'];
}
$sql = "SELECT tblcourses.Course_Name, tblclasses.Class_OnDate, tblclasses.Class_TimeStart, tblclasses.Class_TimeFinish, Class_MaxAllowed
FROM tblcourses INNER JOIN tblclasses ON tblcourses.Course_Code = tblclasses.Course_Code
WHERE (tblclasses.Class_OnDate Between '$min' and '$max') AND (tblclasses.Course_Code = '$code')
ORDER BY tblclasses.Class_OnDate ASC;";
我认为最简单的方法是
if ($code == '')
$sql = "SELECT without WHERE";
else
$sql = "SELECT with WHERE";
顺便说一句,您真的应该作为一个准备好的语句来做这件事,这意味着您需要使用mysqli
或PDO
(您无论如何都应该这样做)。试试看
<?php
$min = "2016-01-01"; // Default search criteria for
$max = "2016-12-31"; // date ranges to search
$code;
if (isset($_GET['submit'])) {
$min = $_GET['min'];
$max = $_GET['max'];
$code = $_GET['courseCode'];
}
if($code){
$sql = "SELECT tblcourses.Course_Name, tblclasses.Class_OnDate, tblclasses.Class_TimeStart, tblclasses.Class_TimeFinish, Class_MaxAllowed
FROM tblcourses INNER JOIN tblclasses ON tblcourses.Course_Code = tblclasses.Course_Code
WHERE (tblclasses.Class_OnDate Between '$min' and '$max') AND (tblclasses.Course_Code = '$code')
ORDER BY tblclasses.Class_OnDate ASC;";
} else{
$sql = "SELECT tblcourses.Course_Name, tblclasses.Class_OnDate, tblclasses.Class_TimeStart, tblclasses.Class_TimeFinish, Class_MaxAllowed
FROM tblcourses INNER JOIN tblclasses ON tblcourses.Course_Code = tblclasses.Course_Code
ORDER BY tblclasses.Class_OnDate ASC;";
}
试试这个;)
我曾经编写过类似于您在某一点上建议的代码,但我觉得这个问题在开发人员中可能很常见,因此我认为我错过了一个使事情更简单的函数或技巧
<?php
$min = "2016-01-01"; // Default search criteria for
$max = "2016-12-31"; // date ranges to search
$code;
$filterWithCode = '';
if(isset($_GET['submit'])){
$min = $_GET['min'];
$max = $_GET['max'];
$code = $_GET['courseCode'];
if($code){
$filterWithCode = " AND (tblclasses.Course_Code = '$code') ";
}
}
$sql = "SELECT tblcourses.Course_Name, tblclasses.Class_OnDate, tblclasses.Class_TimeStart, tblclasses.Class_TimeFinish, Class_MaxAllowed
FROM tblcourses INNER JOIN tblclasses ON tblcourses.Course_Code = tblclasses.Course_Code
WHERE (tblclasses.Class_OnDate Between '$min' and '$max') $filterWithCode
ORDER BY tblclasses.Class_OnDate ASC;";