我有一个使用php和MySQL的网站。在我的一个页面上,我有一个选择查询,其中包含一些表单传递的参数。
在我的表单上有一个<select>
框:
<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>
还有一些选项可以设置从日期到日期。
当我使用Show All选项时,我面临的问题是在我的php中,它没有获取所有记录,我不确定写它的最佳方式
<?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;";
答案 0 :(得分:1)
我认为最简单的方法就是
if ($code == '')
$sql = "SELECT without WHERE";
else
$sql = "SELECT with WHERE";
顺便说一下,你真的应该把这作为一个准备好的声明,这意味着你需要使用mysqli
或PDO
(无论如何你都应该这样做。)
答案 1 :(得分:1)
试
<?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;";
}
希望它有所帮助:)
答案 2 :(得分:1)
试试这个;)
<?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;";