Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 而循环只回显1个值两次_Php - Fatal编程技术网

Php 而循环只回显1个值两次

Php 而循环只回显1个值两次,php,Php,我在数据库中有两个名为forums和forum_categories的表 论坛类别 猫咪 论坛 猫咪 我试图计算每个类别的总数,因为某些原因,它会显示所有记录的总计记录 到目前为止,我在数据库中有两个类别 第一个类别的值为1 第二类的值为2 在第一类中,我有两个cat_id为1的论坛 在第二类中,我有一个cat_id为2的论坛 它显示 第1类-------3类-------- 第2类----------3类-------- 它应该在什么时候显示 第1类-------2类-------- 第2类-

我在数据库中有两个名为forums和forum_categories的表

论坛类别 猫咪

论坛 猫咪

我试图计算每个类别的总数,因为某些原因,它会显示所有记录的总计记录

到目前为止,我在数据库中有两个类别

第一个类别的值为1 第二类的值为2

在第一类中,我有两个cat_id为1的论坛 在第二类中,我有一个cat_id为2的论坛

它显示

第1类-------3类-------- 第2类----------3类--------

它应该在什么时候显示

第1类-------2类-------- 第2类-------1--------

$topics\u count始终显示3


下面这段代码给出了所有结果:

$sql2 = "SELECT * FROM forums WHERE cat_id = cat_id";
$result2 = query($sql2);
$topics_count = row_count($result2); // here this would be 3*
*如果cat1为2,cat2为1,则在每个表行中回送如下内容:

echo "<td>$topics_count</td>";
这是我昨天发给你的同一个演示

然后,您的查询将返回如下内容:

Demo Forum 1 | 2
Demo Forum 2 | 1
更新:

$sql2 = "SELECT
            fc.cat_id,
            fc.cat_title,
            f.forum_name,
            COUNT(f.forum_id) as count
        FROM forums as f
        LEFT JOIN forum_categories fc ON (f.cat_id = fc.cat_id)
        GROUP BY f.cat_id";

$result2 = query($sql2);

while (($row = mysqli_fetch_assoc($result)) != false) {

    $cat_id = $row['cat_id']; // category id
    $cat_title = $row['cat_title']; // category title
    $forum_name = $row['forum_name']; // forum name
    $count = $row['count']; // count of forum_id (grouped by cat_id)

    echo "<tr>";
    echo "<td>$cat_id</td>";
    echo "<td><a href='viewforum.php?f={$cat_id}'>$cat_title</a><br>$forum_name admin</td>";
    echo "<td>$count</td>";
    echo "<td>0</td>";
    echo "</tr>";

}
在这里,我很确定计数是可以的,但不确定论坛名称。

试试这个

替换这个

while (($row = mysqli_fetch_assoc($result)) != false) {
用这个

while ($row = mysqli_fetch_assoc($result)) {

你能给我们看一下表数据吗?我认为你不应该从你的查询中得到6条记录。应该只有3个。这是一个PHP问题。您只需打印两次结果集。Tim Biegeleisen不明白我如何在不同的类别中打印相同的结果两次在PHPMyAdmin中查看您的查询,结果与我的查询非常相似,只是,您有一个使用SQLFIDLE+1Right@ash的工作示例,我昨天已经尝试向他解释过了,他有强烈的欲望继续发布这个答案,以防他现在能更好地理解。否则,您的问题也已经解决了。@ash为了表明我不疯狂,我更新了代码,结果从所有类别中的3变为所有类别中的1。我使用您的代码,我知道您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第行中使用“COUNTf.forum_id FROM forums as f LEFT JOIN forum_categories fc ON f.cat_id=”附近的正确语法1@William我建议休息一会儿,清醒一下头脑,然后回来调试它。如果您将最新的代码和结果添加为“说明”中的新部分,我仍然可以尝试在一段时间内提供帮助。
while (($row = mysqli_fetch_assoc($result)) != false) {
while ($row = mysqli_fetch_assoc($result)) {