我一直在尝试开发一个代码,我根据日期范围和复选框状态搜索SQL表格。
我已经计算出日期的搜索查询,但我还没有能够使用该复选框。我想在一次搜索中结合这两个功能,但我无法弄清楚。
例如:在" 01/01/2012 "之间搜索和" 12/31/2012 "状态是"完成!的(复选框=选中)"
以下是我用于搜索的代码:
表格
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF'];?>">
<table>
<tr>
<td style="text-align:center; padding-top:15px;">
<span>From :</span>
<input type = "date" name = "OLD">
To:
<input type = "date" name = "NEW">
Status:
<input type='checkbox' name='Status' value='DONE'/>
</td>
</tr>
<tr>
<td style="text-align:center; padding-top:15px;">
<button type = "submit" name = "search" value = "Search" class="button orange">Search</button>
<button type = "reset" value = "Clear" class="button orange">Reset</button>
</td>
</tr>
</table>
</form>
PHP
<?php
if(!isset($_POST['search']))
{
?>
<?php
}
else
{
$OLD = trim($_POST['from']);
$NEW = trim($_POST['to']);
$connection = mysql_pconnect("HOST", "USER", "PASS") or die("Connection failed. ".myslq_error());
mysql_select_db("DATABASENAME") or die("Unable to select db. ".mysql_error());
$query = "SELECT * FROM table WHERE Date >= '$OLD' AND Date <= '$NEW' ORDER BY date ASC";
$result = mysql_query($query) or die(mysql_error());
echo "<table class='table' id='SearchResult' cellspacing='0' cellpadding='0'>";
echo "<tr class='rowa'><b>";
echo "<td class='col1 cell'>Name</td>";
echo "<td class='col2 cell'>Last Name</td>";
echo "</tr>";
echo "</table>";
while($record = mysql_fetch_object($result))
{
echo "<table class='table' id='SearchResult' cellspacing='0' cellpadding='0'>";
echo "<tr class='rowb'>";
echo "<td class='col1 cell'>".$record->Name."</td>";
echo "<td class='col2 cell'>".$record->LastName."</td>";
echo "</tr>";
echo "</table>";
}
}
?>
谁能以正确的方式引导我完成这个任务?!非常感谢!
答案 0 :(得分:0)
你可以这样做:
else
{
$OLD = trim($_POST['from']);
$NEW = trim($_POST['to']);
$status = isset($_POST['Status']) ? "AND status = 'DONE' " :"AND status = 'NOT DONE' ";
$connection = mysql_pconnect("HOST", "USER", "PASS") or die("Connection failed. ".myslq_error());
mysql_select_db("DATABASENAME") or die("Unable to select db. ".mysql_error());
$query = "SELECT * FROM table WHERE Date >= '$OLD' AND Date <= '$NEW' ".$status."ORDER BY date ASC";
$result = mysql_query($query) or die(mysql_error());
答案 1 :(得分:0)
我认为查询组合必须是这样的:
$query = "SELECT * FROM table WHERE 1 = 1 "
if ($_POST['MyCheckbox']=="checked")
$query = $query . " and Date >= '$OLD' AND Date <= '$NEW' ORDER BY date ASC";