MySQL PHP显示按父记录分组的会话中的所有消息

时间:2017-05-09 22:14:36

标签: php mysql

我使用mysqli_fetch_assoc将查询结果回显到我的页面。不幸的是,它给了我一对一的关系。

以下是他们目前的展示方式:

Listing Name    Thread ID   Guest Name  Sent by UserID  Message     
Spacious Bedroom    338082922   Daniel  43762688    I can't, I'm sorry. I won't even be around at the end of July.  
Spacious Bedroom    338082922   Daniel  98936811    Are you willing to rent it out at the end of july   
Spacious Bedroom    338082922   Daniel  43762688    Sorry, no room  
Spacious Bedroom    338082922   Daniel  98936811    Hello, I'd like to stay Thanks -Dan     

我想要显示一次列表名称,一次显示一次线程ID,一次显示一次,然后显示旁边两个用户之间的对话。

我希望将对话分组到列表,线程和访客。

以下是我目前正在做的事情,但没有得到我想要的结果:

<table>
      <tr>
        <th style="text-align: left; width: 300px;">Listing Name</th>
        <th style="text-align: left; width: 100px;">Thread ID</th>
        <th style="text-align: left; width: 100px;">Guest Name</th>
        <th style="text-align: left; width: 100px;">Sent by User ID</th>
        <th style="text-align: left; width: 300px;">Message</th>
      </tr>
            <?php while($message = mysqli_fetch_assoc($message_set)) { ?>
      <tr>
        <td><?php echo htmlentities($message["listingname"]); ?></td><td><?php echo htmlentities($message["thread_id"]); ?></td><td><?php echo htmlentities($message["guest_name"]); ?></td><td><?php echo htmlentities($message["sent_by"]); ?></td><td><?php echo htmlentities($message["msg_body"]); ?></td>
      </tr>
            <?php } ?>
        </table>

1 个答案:

答案 0 :(得分:0)

诀窍是跟踪当前的列表名称。如果它改变了,打印它,否则什么都不打印。这是逻辑:

$name='';
…
if($message["listingname"]==$name) echo '';
else echo $name=$message["listingname"];

在这里,我们

  • 将变量初始化为''
  • 如果新名称匹配,则回显''
  • 否则回复新名称。

echo $a=$b构造复制$ b int $ a然后打印结果。