2013-11-23 34 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); 

希望这段代码可以解决你的问题