我想制作可以每周,每月和每年查看的报告。
例如: 我希望看到每周注册的人,或者我想看看谁在这个月或一年中注册,以及付款。我希望看到这个6月的登记者。我希望通过使用下拉搜索来查看2010年的参与者。
//这是我每周报告的代码,我希望看到上周报名的学生,但我知道我的代码是否正确。
$datetoday=date("Y-m-d");
$result = mysql_query("
SELECT enrollee_info.*, payments.* from enrollee_info
INNER JOIN payments on payments.enrollee_id=enrollee_info.e_id
WHERE enrollee_info.category='Walk In'
AND DATE_FORMAT(payments.entrydate , %Y-%m-d')>=SUBDATE('".$datetoday."' , INTERVAL 7 DAY)");
每月和每年,例如,我想查看本月注册的人等,我希望通过使用您可以选择要搜索的月份或年份的下拉列表来查看今年注册的人。
答案 0 :(得分:5)
关于INTERVAL
的可接受单位,请查看the manual。您只需使用开关即可确定记录的范围。
在您的下拉菜单中,您将有周,月或年。然后,您可以使用开关准备语句。
$sql = "SELECT enrollee_info.*,
payments.*
FROM enrollee_info
INNER JOIN payments
ON payments.enrollee_id = enrollee_info.e_id
WHERE enrollee_info.category = 'Walk In'
AND payments.entrydate >= Subdate(Curdate(), ";
switch ($range) {
case "month":
$sql .= 'INTERVAL 1 MONTH';
break;
case "year":
$sql .= 'INTERVAL 1 YEAR';
break;
//if no match, use week
default:
$sql .= 'INTERVAL 1 WEEK';
}
$sql .= ')';
哪会创建这样的声明:
SELECT enrollee_info.*,
payments.*
FROM enrollee_info
INNER JOIN payments
ON payments.enrollee_id = enrollee_info.e_id
WHERE enrollee_info.category = 'Walk In'
AND payments.entrydate >= Subdate(Curdate(), INTERVAL 1 week)
如果可能,请尽量避免从每个表中获取所有列并使用列列表。