【问题标题】:Count total posts related to a forum - PHP Logic计算与论坛相关的帖子总数 - PHP Logic
【发布时间】:2017-11-12 16:16:59
【问题描述】:

我需要一些帮助来弄清楚这个逻辑,因为在我看到的大多数教程中,他们只需要在数据库中存储一个 topics_count int 并且每次在该特定论坛中创建一个主题时,他们都会增加 topic_count为他们创建的论坛+1;

但是我们不能通过使用mysqli_num_rows 来获取值来实现这一点吗?这将返回与论坛相关的总行数(主题)。但问题是当论坛在数组中时,我如何创建这种关系。

论坛和主题都有:

  • 身份证
  • 标题
  • 说明

我知道安全问题。这个例子只是一个练习。

这就是我从数据库中显示论坛并向每个论坛回显href的方式。

                $array_forums = mysqli_fetch_assoc($res_forums); 
                    echo "<div id='forum_{$array_forums["forum_id"]}' class='forum_classic'>";
                        echo "<div id='forum_classic_status'></div>";                           
                        echo "<div id='forum_classic_container'>";
                            echo "<div id='forum_classic_icon'></div>";
                            echo "<div id='forum_classic_description'>";
                                    echo "<a href=forum.php?forum=" . urlencode($array_forums["forum_id"]) . ">";
                                        echo "<h1>{$array_forums["forum_title"]}</h1>";
                                    echo "</a>";
                                echo "<p>{$array_forums["forum_description"]}</p>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div id='forum_classic_topics'>Topics</div>";
                        echo "<div id='forum_classic_replies'>Replies</div>";
                        echo "<div id='forum_classic_lastposter'>Lastposter</div>";
                    echo "</div>";
                }

这是我在点击链接后在每个论坛中显示主题的方式。

            $forum_id = $_GET['forum'];

            //1. Perform database query for topics
            $sql_topic = "SELECT * FROM topics WHERE topic_forum_id = {$forum_id}";
            $res_topic = mysqli_query($conn, $sql_topic);
            //2. Display returned data from topics
            if (mysqli_num_rows($res_topic) >= 1) {
                $array_topic = mysqli_fetch_assoc($res_topic);
                echo "<div id='topic_{$array_topic["topic_id"]}'>{$array_topic["topic_title"]}";
                echo "</div>";
            } else {
                echo "<a href='community.php'>Return To Forum Index</a>";
                echo "<p>There are no topics in this forum yet.</p>";
            }

【问题讨论】:

  • 我无法理解你的要求,你能解释一下吗
  • 基本上这是我用来显示论坛及其相关主题的代码,现在我想知道如何实现主题计数器,以计算论坛中有多少主题。
  • $sql_topic = "SELECT * FROM topics WHERE topic_forum_id = {$forum_id} COUNT(id) as count";如果您不在数据库中使用 id,请将 id 更改为其他内容。当你 var_dump 你的 $sql_topic 时,你会注意到 'count' 作为键和它旁边的值。你能试着告诉我吗?

标签: php mysql


【解决方案1】:

可以使用count来统计行数

$sql_topic = "SELECT count(*) FROM topics WHERE topic_forum_id = {$forum_id}";
$row = mysqli_fetch_row($sql_topic);
$num = $row[0];

$num 将返回特定论坛的主题数

【讨论】:

  • 干得好,在你的帮助下,我成功了。但是我做了一个小调整,因为这需要在与论坛相同的页面中工作,并且一旦我从 URL 中点击论坛内部,我就会得到 {$forum_id}。
【解决方案2】:

在@Anil Shrestha 的帮助下,$num 将作为主题计数器。

                    $sql_topic = "SELECT count(*) FROM topics WHERE topic_forum_id = {$array_forums["forum_id"]}";
                    $res_topic = mysqli_query($conn, $sql_topic);
                    $row = mysqli_fetch_row($res_topic);
                    $num = $row[0];

【讨论】:

  • 大哥继续收藏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多