在php中回显特定的字符串/文本以及特定的用户名


echo specific string/text along with a particular username in php

我有一个表,call posts像这样:

post_id       topic_id       user_id     content         date
   1               7            12         bla bla         7/15/2014
   2               16           70         bla bla         7/16/2014
   3               7            14         bloa bla        7/20/2014

假设我有另外两个名为users的表,其中包含user_idusername列,以及topics表,该表通过名为topic_id的外键链接到posts表。posts表中的user_idusers表的外键。

假设我可以成功地回显posts表中的所有列。

正如您在posts表中看到的,topic_id # 7有两个(可能更多)post_id # 13,这将由与任何其他usernames关联的任何其他user_ids添加。

然而,我的问题是,我只能为所有与特定topic_id相关联的usernames回显字符串/文本Posted By username,即# 7。现在,我想要的和我正在努力的是echo第一个username(当然是从用户表)谁添加了post_id #1与字符串/文本张贴的这是输出像Posted By username1 (user_id #12);和post_id # 3以及另一个字符串/文本,如 reply By,输出如Replied By usename2 (user_id #14)。

注意:这是我的查询:

$q = "SELECT post_id, content, date, username 
      FROM posts 
      INNER JOIN users USING (user_id)";
$r = mysqli_query ($dbc, $q)
while ($row= mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    echo "<p>Posted By {$row['username']} ({$row['date']})<br />{$row['content']}</p><br />'n";

}

感谢您的帮助!由于

好的,我正在更新Perry的帖子,我想我明白你想在这里做什么,它是

你需要按主题排序然后按帖子排序这样创建帖子的人就会排在第一位

$q = "SELECT p.post_id, p.content, p.date, u.username ,p.topic_id
  FROM posts p JOIN users u on (u.user_id=p.user_id)
  ORDER BY p.topic_id, p.post_id
";

现在在你的while循环中,你需要做这样的事情,我们还需要跟踪哪些主题已经显示,所以我们需要一个空数组。

    $displayedTopics = array();
        while ($row= mysqli_fetch_array($r, MYSQLI_ASSOC)) {
            if (!in_array($row['topic_id'],$displayedTopics))
            {
             echo "<p>Posted By {$row['username']} ({$row['date']})<br />{$row['content']}</p><br />'n"; // We echo out from who it was posted
             // Then add it to the displayed array
            $displayedTopics[] = $row['topic_id'];
            }
 // Otherwise we just echo out as it was a reply
             else
               echo "<p>Replied By {$row['username']} ({$row['date']})<br />{$row['content']}</p><br />'n";

     }

希望这有助于我理解你想要完成什么!

试试这个:

$q = "SELECT p.post_id, p.content, p.date, u.username 
  FROM posts p JOIN users u on (u.user_id=p.user_id)";