2013-11-23 75 views
0

我想根據日期顯示數據在表中,目前正在使用下面的代碼。根據表中的日期顯示數據使用PHP和Mysql

if($_GET){ 
$datefrom = $_GET['datefrom']; 
$dateto = $_GET['dateto']; 
$date0 = date('Y-m-d', strtotime($datefrom . " +0 days")); 
$date1 = date('Y-m-d', strtotime($datefrom . " +1 days")); 
$date2 = date('Y-m-d', strtotime($datefrom . " +2 days")); 
$date3 = date('Y-m-d', strtotime($datefrom . " +3 days")); 
$date4 = date('Y-m-d', strtotime($datefrom . " +4 days")); 
} 

然後我查詢我的數據庫反覆使用以下語句

 $stmtHR0 = $db->query("SELECT * FROM table WHERE Form_Date = '$date0' AND State = 'HR'"); 
     $numHR0 = $stmtHR0->rowCount(); 
     $stmtHR1 = $db->query("SELECT * FROM table WHERE Form_Date = '$date1' AND State = 'HR'"); 
     $numHR1 = $stmtHR1->rowCount(); 
     $stmtHR2 = $db->query("SELECT * FROM table WHERE Form_Date = '$date2' AND State = 'HR'"); 
     $numHR2 = $stmtHR2->rowCount(); 
     $stmtHR3 = $db->query("SELECT * FROM table WHERE Form_Date = '$date3' AND State = 'HR'"); 
     $numHR3 = $stmtHR3->rowCount(); 
     $stmtHR4 = $db->query("SELECT * FROM table WHERE Form_Date = '$date4' AND State = 'HR'"); 
     $numHR4 = $stmtHR4->rowCount(); 

「HR」只是一個狀態,我有30個州對執行這些查詢。代碼的工作原理,但我想知道是否有更好的方法做到這一點,如果專家能夠幫助我,我將不勝感激。請原諒我,因爲我仍在學習PHP。

+1

什麼是'$ dateto'用於?你想完成什麼? – Babblo

+0

嗨Babblo,'$ dateto'用於另一個需要在兩個日期之間返回結果的查詢。我的數據庫中有大量的註冊用戶,我正在計數它們並根據日期在表格中顯示它們。 – user2950355

回答

0

這可以用一個查詢完成。假設From_Date場是DATE字段類型:

if ($_GET) { 
    $dateF = date('Y-m-d', strtotime($_GET['datefrom'])); 
    $dateT = date('Y-m-d', strtotime($_GET['dateto'])); 
    $sql = " 
     SELECT `From_Date`, COUNT(*) AS `count_num` 
     FROM  `table` 
     WHERE `From_Date` BETWEEN '$dateF' AND '$dateT' AND `State` = 'HR' 
     GROUP BY `From_Date` 
     ORDER BY `From_Date` ASC 
    "; 
    // db fetch all 
} 
0

試試這個代碼: 其實你可以使用數組日期

$date = array(); 
$date[0] = date('Y-m-d', strtotime($datefrom . " +0 days")); 
$date[1] = date('Y-m-d', strtotime($datefrom . " +1 days")); 
$date[2] = date('Y-m-d', strtotime($datefrom . " +2 days")); 
$date[3] = date('Y-m-d', strtotime($datefrom . " +3 days")); 
$date[4] = date('Y-m-d', strtotime($datefrom . " +4 days")); 

for($i = 0; $i<count($date); $i++{ 
    $query_temp[] = "(
     SELECT COUNT(*) FROM table WHERE Form_Date = '" . $date[$i]. "' AND State = 'HR' 
     ) AS count" . $i; 

} 

$query = "SELECT " . implode(", ",$query_temp); 
$stmtHR4 = $db->query($query); 

希望這段代碼可以解決你的問題

相關問題