我正在从头开始创建自己的博客,主页按照发布时间顺序加载最新帖子。我使用前端控制器调用帖子并将数据存储在MySQL数据库中。网站本身很棒,帖子都完全没有问题。问题是让主页工作。
我为主页创建了一些PHP函数。它们通常按ID按降序排列帖子(数据库行),因为它是一个自动增量字段,并调用它们的数据。然后通过从数据库最顶行获取数据,将最新帖子显示为顶部的“特色帖子”,这是最新帖子。
这很好 - 当我回应结果时,它会像我想要的那样显示最新的帖子。
在下面我想要两个并排的盒子,用于第一个之前的两个帖子。所以我做了这个函数来调用它们:
function fetch_rest_posts_1($conn) {
$stuff = $conn->query("SELECT * FROM table WHERE is_post = 1 ORDER BY id DESC LIMIT 1,2");
while ($row = $stuff->fetch_array()) {
$i=1;
return '<div id="post_'.$i.'" style="width:308px;height:215px;padding:5px">
<h2>'.$row['title'].'</h2>
<p>'.date('d/m/Y',strtotime($row['published_date'])).' by '.$row['author'].' | <a href="http://www.domainname.com/'.$row['uri'].'#disqus_thread"></a></p>
<p>'.$row['meta_description'].'</p>
</div>';
$i++;
} // style="white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis"
}
当我回显结果,显示我想要的所有内容时它实际上工作得很好,但它只显示一个div,而不是两个。当我接受SQL查询并直接将其输入phpMyAdmin时,它给了我两行。我做错了什么?
(我把自动增加$ i放在那里,以便我可以隔离每个盒子并稍后改变样式。)
答案 0 :(得分:1)
您的问题是由循环中的return语句引起的。您应该在功能顶部添加$return = ''
,将return
替换为$result .=
,将return $result
替换为您的功能。
此外,循环计数器$i
在每次迭代中都会重置。将初始分配移出循环。
编辑:.=
有意附加到$result
,而不是将其替换为从下一个数据集构建的其他值。
答案 1 :(得分:0)
那是因为return会停止执行该函数尝试这种方法:
function fetch_rest_posts_1($conn) {
$stuff = $conn->query("SELECT * FROM table WHERE is_post = 1 ORDER BY id DESC LIMIT 1,2");
$post = array();
while ($row = $stuff->fetch_array()) {
$post[] = $row;
}
return $post;
}
因此功能的目的是获取数据,以便稍后打印它:
$row = fetch_rest_posts_1($conn);
for($i = 0; count(row); $i++){
echo '<div id="post_'.$i.'" style="width:308px;height:215px;padding:5px">
<h2>'.$row[$i]['title'].'</h2>
<p>'.date('d/m/Y',strtotime($row['published_date'])).' by '.$row[$i]['author'].' | <a href="http://www.domainname.com/'.$row[$i]['uri'].'#disqus_thread"></a></p>
<p>'.$row[$i]['meta_description'].'</p>
</div>';
}
答案 2 :(得分:0)
在循环外发起$i
并使用echo()
代替return()
return()
打破了循环
或使用
$result .= '<div id="post_'.$i.'" style="width:308px;height:215px;padding:5px">
<h2>'.$row['title'].'</h2>
<p>'.date('d/m/Y',strtotime($row['published_date'])).' by '.$row['author'].' | <a href="http://www.domainname.com/'.$row['uri'].'#disqus_thread"></a></p>
<p>'.$row['meta_description'].'</p>
</div>';
循环后和return $result;