我无法让我的一年得到正确回应。
示例:我有2篇新闻文章,一篇是2011年,另一篇是2012年。他们正在分成正确的“年份”div。但是当谈到渲染年份时,它是有效的。但2011年和2012年相互叠加。像这样的东西。
2012
2011
5.1.12我的新闻文章
2011年假设去哪儿
5.1.11我的新闻文章
这是我的代码。
<?
$startYear = 2010;
$endYear = 2012;
for($y = $endYear; $y > $startYear -1; $y--) { ?>
<?
$news = query("SELECT * FROM news_entries
WHERE title > ''
AND published = 1
AND date >= '" . mktime(0,0,0,0,0,$y) . "'
AND date < '" . mktime(0,0,0,0,0,$y+1) . "'
ORDER BY date DESC");
?>
查询的其余部分。
<? if($news['total']>0) { ?>
<h3><? echo $y; ?></h3>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<th class="first" width="125">Date</th>
<th>News Headline</th>
<th width="140"> </th>
</tr>
<? do { ?>
<tr>
<td><span><? echo date("F d, Y",$news['data']['date']); ?></span></td>
<td><a href="<? echo $baseURL . "news/" . $news['data']['id'] . "/" . htaccess_format($news['data']['name']); ?>" title="<? echo $news['data']['headline']; ?>"><? echo $news['data']['headline']; ?></a></td>
<td><a href="<? echo $baseURL . "news/" . $news['data']['id'] . "/" . htaccess_format($news['data']['name']); ?>" title="Learn More" class="button">Learn More</a></td>
</tr>
<? } while($news['data'] = mysql_fetch_assoc($news['object'])); ?>
<? }} ?>
<tr>
<td colspan="2" class="last"></td>
<td class="last"> <a href="javascript:;" title="Back to Top" class="top">Back to Top</a></td>
</tr>
</table>
答案 0 :(得分:0)
我同意加藤的评论。通常,您获得所有结果并迭代它们,在数据更改时打印新标题。
以下是通常处理此类事物的方式(伪代码):
$sql = "SELECT * FROM news_enteries ORDER BY date DESC";
// Prepare statement
$stmt = $pdo->prepare($sql);
// Bind variables
...
// Execute query
$stmt->execute() or die();
$year_header = "";
while ($row = $stmt->fetch()) {
$year = date("Y", strtotime($row['date']));
// Do we need a new year header?
if ($year_header <> $year) {
$year_header = $year;
// Print year header
echo $year_header;
}
// Process rest of the row
...
}