2015-06-22 204 views
0

我有一個頁面(members.php)將日期發佈到另一個頁面(results.php)。使用下面的代碼,我可以成功地從成員頁面獲取「to」和「from」變量。按日期篩選結果PHP和MySQL

<?php echo $_POST["to"]; ?> 
<?php echo $_POST["from"]; ?> 

我現在的問題是,我怎麼能以顯示過濾結果只適用於在上述變量指定的日期創建一個查詢(在results.php)?我是否需要創建一個sql連接和sql查詢呢?

+0

是否要在兩個日期之間顯示結果 –

+0

是的,但據我所知,我必須創建一個全新的SQL連接! – Leonidas

回答

1

如果日期格式爲YYYY-mm-dd,那麼您可以在下面使用它,否則您需要更改格式。

您可以如下操作:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db('foo', $link); 
if (!$db_selected) { 
    die ('Can\'t use foo : ' . mysql_error()); 
} 

//$from_date = $_POST['from_date']; 
//$to_date = $_POST['to_date']; 

$from_date = date("Y-m-d",strtotime('06/10/2015')); 
$to_date = date("Y-m-d",strtotime('06/16/2015'));//$_POST['to_date']; 

$query = "SELECT * FROM table WHERE from_date >= '".$from_date."' AND to_date <= '".$to_date."'"; 
// Perform Query 
$result = mysql_query($query); 

if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 

while ($row = mysql_fetch_assoc($result)) { 
    print_r($row); 
} 
+0

你好,但我如何設置連接到MySQL?你能寫出完整的格式嗎? – Leonidas

+0

@Leonidas:檢查我更新的代碼 – AnkiiG

+0

謝謝,但我得到了這個「不推薦使用:mysql_connect():mysql擴展已被棄用,將來會被刪除:使用mysqli或PDO代替 – Leonidas

0

您應該連接到數據庫,並比較這兩個日期:

$dateOne = $_POST["from"]; 
$dateTwo = $_POST["to"]; 

如果更大的日期是0,那麼你應該總是有可能的最高日成功地查詢數據:

if(empty($dateTwo)) 
{ 
    $dateTwo = date("31-12-Y"); 
    //If $dateTwo is null, than it will be 31/12/2015 otherwise query will now work well 
} 

那麼你應該寫這樣的SQL查詢:

"SELECT * FROM `table` where `dateOne` > '$dateOne' and `dateTwo` < '$dateTwo'"; 

在這種情況下,如果用戶想要所有日期都大於dateOne,但不檢查dateTwo,此查詢將返回比dateOne大的所有數據,並且低於當前可用的最高日期(在我們的案例中是31/21/2015)。

0

它不一定是創建一個新的SQL連接,而只是一個新的查詢(建議您已連接到數據庫)。在我看來,如果你想顯示兩個日期之間的結果。

由於日期已經給出,我不檢查現有值或空值。

所以:

<?php $start_date = $_POST["from"]; 
     $end_date = $_POST["to"]; 

    //sql will be 
    $sql = "SELECT * FROM `your_table` WHERE `the_date_column` BETWEEN {$start_date} AND {$end_date}"; 
?> 

請但是這樣做使用的mysqli或PDO連接層,並設法逃脫這個變量來防止SQL注入或更好,使用準備好的語句。