0

日付範囲とチェックボックスのステータスに従ってSQLテーブルを検索するフォームがあるコードを開発しようとしています。

日付の検索クエリはすでに作成しましたが、チェックボックスを使用して機能させることができませんでした。1回の検索で両方の機能を組み合わせたいのですが、わかりません。

例: 「2012年1月1日」と「2012年12月31日」の間で検索します。ステータスは「完了!チェックボックス=チェック済み)」です。

検索に使用しているコードは次のとおりです。

フォーム

<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>";
        }       
    }
?>

これを達成するために誰が私を正しい方法で導くことができますか?!どうもありがとう!

4

2 に答える 2

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());
于 2012-10-31T03:19:51.890 に答える
0

クエリの構成は次のようなものでなければならないと思います。

$query = "SELECT * FROM table WHERE 1 = 1 "
if ($_POST['MyCheckbox']=="checked")
  $query = $query . " and Date >= '$OLD' AND Date <= '$NEW' ORDER BY date ASC";
于 2012-10-31T03:21:49.690 に答える