0

選択した基準に基づいて結果を表示するdb検索があり、基準の1つは日付範囲と、他の3つの基準です。検索はうまく機能します。日付範囲で検索してすべての結果を表示するか、日付範囲を検索できます。そして、他の変数の1、2、または3つすべてを追加します。ただし、日付範囲を省略した場合、結果は表示されません。mysqldbを使用します。

Search page::

$term1 = $_REQUEST['term1'];
$term2 = $_REQUEST['term2'];
$term3 = $_REQUEST['term3'];
$term4 = $_REQUEST['term4'];
$term5 = $_REQUEST['term5'];

$terms= '&term1='.$term1 . '&term2='.$term2 . '&term3='.$term3 . '&term4='.$term4 . '&term5='.$term5;

$limit=15;

$sql ="SELECT * FROM ircb WHERE cdate BETWEEN '$term2' AND '$term3' AND staff  LIKE '%$term1%'  AND item LIKE '%$term4%' AND service LIKE '%$term5%' ORDER BY id DESC LIMIT $start_from, 15";


$rs_result = mysql_query ($sql);
$num_rows = mysql_num_rows($rs_result);
$query = mysql_query("SELECT * FROM ircb WHERE cdate BETWEEN '$term2' AND '$term3' AND staff  LIKE '%$term1%'  AND item LIKE '%$term4%' AND service LIKE '%$term5%'"); 
$number=mysql_num_rows($query); 

用語2と用語3は、日付ピッカーから入力され、000-00-00の適切な形式で入力された日付範囲の用語です。問題は、WHEREステートメントのおかげだと思います。

4

1 に答える 1

0

はい、それが問題になります。理想的には、日付が設定されていないか、0000-00-00である場合に、すべての可能な日付をカバーするように日付文字列のデフォルト値を設定します。

例えば:

if((!isset($_REQUEST['term2'])) OR ($_REQUEST['term2'] == '0000-00-00')) {
    $term2 = '1970-01-01';
}
if((!isset($_REQUEST['term3'])) OR ($_REQUEST['term3'] == '0000-00-00')) {
    $term3 = date("Y-m-d");
}

したがって、日付条件が設定されていない場合は、指定された日付範囲(現在の日付まで)にまたがるデフォルト値が使用されます。

于 2012-12-11T13:22:57.350 に答える