使用日期范围和复选框搜索SQL

时间:2012-10-31 02:41:26

标签: php sql search checkbox

我一直在尝试开发一个代码,我根据日期范围和复选框状态搜索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&nbsp:</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>";
        }       
    }
?>

谁能以正确的方式引导我完成这个任务?!非常感谢!

2 个答案:

答案 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";