我在数据库中加载了数据,每行都有一个日期列
目前我将所有结果都拉到了一个页面上,但我想把它分成几个月。 我的页面上有按钮,单击时应该只显示相应的结果,例如当单击2012年1月按钮时,将显示该月的所有结果
以下是我试图实现的一个例子: http://i.stack.imgur.com/PY7iN.jpg
=============================================== ==================================
<?php
$con = mysql_connect("localhost", "username", "pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);
$result = mysql_query("SELECT * FROM tablename");
$num_rows = mysql_num_rows($result);
echo "<table border='0' cellspacing='0'>";
while($row = mysql_fetch_array($result))
{
$i++;
if($i%2==0) $class="cell1"; else $class="cell2";
echo "<tr class='$class'>";
echo "<td>".$row["firstname"]." ".$row["lastname"]." thinks that it will happen on
<span class=datecolor>".date('l jS F Y',strtotime($row['date']))."</span></td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
=============================================== ==========================
我正在寻找一些帮助,我可以通过点击按钮来显示每个月的结果,而不会一次显示所有结果。
此外,当首次查看页面时,ID会自动显示当月的结果,例如,如果现在查看它会显示8月结果
希望你能帮忙
答案 0 :(得分:1)
要解决您的第一个问题(一次显示一个月),最好的办法是让您的数据库为您完成所有工作。现在你的SQL SELECT语句看起来像
SELECT * FROM tablename
您想要添加WHERE
子句,该子句将限制此查询仅显示特定月份的行...类似
SELECT * FROM tablename WHERE date BETWEEN '05/01/2011' AND '05/31/2011'
您可能需要针对特定的数据库引擎或设置进行调整。 Here's one WHERE tutorial;你可以在网上找到更多。
答案 1 :(得分:0)
您可以将所有按钮都链接到页面,并使用指定月份的查询字符串(例如:www.mysite.com/mypage?month=september)。然后从查询字符串中获取月份,并仅选择该月份中的行。
请参阅:
答案 2 :(得分:0)
像
这样的东西$month = isset($_GET['month']) ? intval($_GET['month']) : 0;
$year = isset($_GET['year']) ? intval($_GET['year']) : 0;
if( empty($month) ){
$month = date('n');
}
if( empty($year) ){
$year = date('Y');
}
$query = mysql_query('SELECT * FROM table_name WHERE MONTH(date_field)="'.$month.'" AND YEAR(date_field)='.$year.'"');
// or maybe use BETWEEN syntax
while( false!==($row=mysql_fetch_assoc($query)) ){
// do something...
}
需要年份,因为一个月的数字可能属于不同的年份数字(03-2010,03-2011等等),因此当您的数据涵盖不同年份的日期时,您无法确定您只需拥有哪些数据月