我有一个网页,我想在列表中显示PHP / MySQL结果,但我想在每个标题之前添加一个数字,例如:
01 ...第一篇文章的标题
02 ......第二篇文章的标题
这些将基于我从数据库中获得的结果数量。这是我获取列表的代码:
ERROR
如何让它显示01, 02, 03, etc
代替$post_number
?
答案 0 :(得分:2)
您需要声明一个计数器变量,以便我们可以跟踪每个循环并打印它。 $counter
是我将在本例中使用的变量,我在循环之前声明它。
将$post_numbers
变量替换为$counter
变量,并将其置于循环中,但在其结束时,我们需要将$counter
变量增加1. {{ 1}}将在每次循环后增加,因此它将跟踪有多少记录。
$counter++
^对于每个循环,它会在你发布当前数字后将你的计数器变量增加1。因为它只会在有结果的情况下循环,所以这将有效地为您计算,因此您可以为列表编号。
修改强> 正如 CatalinB 所建议的那样:
$posts_sql = "SELECT id, added, title FROM posts ORDER BY added DESC LIMIT $offset, $post_limit";
$posts_res = mysqli_query($con, $posts_sql);
$counter = 1;
while($post = mysqli_fetch_assoc($posts_res)){
$post_id = $post["id"];
$post_added = $post["added"];
$post_title = ucwords($post["title"]);
$display_posts .= "
<b>$counter</b> ... <strong class='resultsLink'>$post_title</strong>";
$counter++;
};
这将允许您在前面的0位数字前面加上前面的0。
答案 1 :(得分:1)
使用mysqli_fetch_all
函数一次获取所有记录,然后使用foreach
循环显示所有结果,并使用$ results表的键显示行数。
$posts_sql = "SELECT id, added, title FROM posts ORDER BY added DESC LIMIT $offset, $post_limit";
$posts_res = mysqli_query($con, $posts_sql);
$results = mysqli_fetch_all($posts_res,MYSQLI_ASSOC);
foreach($results as $key=>$post){
$post_id = $post["id"];
$post_added = $post["added"];
$post_title = ucwords($post["title"]);
$display_posts .= "
<b>".sprintf("%02d",$key)."</b> ... <strong class=\"resultsLink\">$post_title</strong>
};