PHP和MYSQL中的新闻存档显示零结果
例如,我试图列出所有前几个月发表的帖子,并显示帖子的数量PHP和MYSQL中的新闻存档显示零结果,php,mysql,archive,Php,Mysql,Archive,例如,我试图列出所有前几个月发表的帖子,并显示帖子的数量 2011 November (14) October (12) April (3) 2010 December (2) etc etc 下面的代码是我如何试图使这项工作,但它实际上并没有返回任何结果,我似乎无法理解为什么 $sql = "SELECT nid, ndate FROM weaponsnews ORDER BY ndate DESC"; $result = $db->query($sq
2011
November (14)
October (12)
April (3)
2010
December (2)
etc etc
下面的代码是我如何试图使这项工作,但它实际上并没有返回任何结果,我似乎无法理解为什么
$sql = "SELECT nid, ndate FROM weaponsnews
ORDER BY ndate DESC";
$result = $db->query($sql);
$data = array();
while($row = $result->fetch_assoc())
{
$year = date('Y', strtotime($row['ndate']));
$month = date('m', strtotime($row['ndate']));
$data[$year][$month][] = $row;
}
$result->free();
foreach($data as $_year => $_months)
{
echo $_year. "<br>";
foreach($_months as $_month => $_entries)
{
$mentries = count ($_entries);
echo $_month. " (" .$mentries. ")";
}
}
$sql=“选择nid,从武器新闻中淹没
按“描述”命令;
$result=$db->query($sql);
$data=array();
而($row=$result->fetch_assoc())
{
$year=日期('Y',标准时间($row['ndate']);
$month=日期('m',标准时间($row['ndate']);
$data[$year][$month][]=$row;
}
$result->free();
foreach($年=>$月数据)
{
echo$_year.“
”;
foreach($\u个月作为$\u个月=>$\u个条目)
{
$mentries=计数($\个条目);
echo$_month.”(“$mentries.”);
}
}
如果在MySQL查询中进行计数,会更容易。例如:
SELECT YEAR(`ndate`) AS 'year', MONTH(`ndate`) AS 'month', COUNT(`nid`) AS 'count' FROM `weaponsnews ` GROUP BY YEAR(`ndate`), MONTH(`ndate`) DESC
这将提供三列,其中第一列是年,第二列是月,第三列是该月的项目数。然后,您可以使用foreach轻松地遍历此列表。比如:
$data = array();
while($row = $result->fetch_assoc()) {
$data[$row['year']][$row['month']] = $row['count'];
}
$result->free();
这将为您提供如下数组:
$data = array(
'2001' => array(
'1' => '83',
'3' => '102'
),
'2012' => array(
'6' => '43',
'9' => '33'
),
'2013' => array(
'7' => '55'
)
);
您可以通过迭代数组来打印树:
foreach ($data as $year => $months) {
echo $year.'<br>';
foreach ($months as $month => $count) {
echo $month.'('.$count.')<br>';
}
}
foreach($year=>$months){
回音$year.“
”;
foreach($月份为$月份=>$计数){
回显$month.'('.$count.')
;
}
}
Ok如何更改它,以便我可以控制它在PHP中的显示方式,例如,现在它正在显示以下内容,echo“$record[month]-$record[year]($record[count])”
as3-2012(1)
这很好,我知道它正在工作,但是如果我想将它显示为2012年3月(1)
我知道我可以用Strotime实现这一点,但是我可以把它放在哪里呢。我还没有试过这个代码,但它应该会给你一个方法。让我知道它是否有效。我实际上无法让您编辑的内容的第二部分正常工作,我已经非常接近我想要的方式了,但简单地说,我只想改变它显示的日期格式,$rows=$db->fetch\u all\u array($sql);foreach($record的行){echo date('F',$record[month])。“”.date('o',$record[year])。”($record[count]);}
那么您想要2012年3月(1)而不是树?在本例中,请尝试:echo date('F',mktime(0,0,0,$record['month'])。$record['year'])('.$record['count'.')太好了,我可以处理,希望客户喜欢它的样子,谢谢