【问题标题】:php mysql many to many relationship query result displayphp mysql 多对多关系查询结果显示
【发布时间】:2016-06-21 13:43:34
【问题描述】:

我只是想知道您是否可以帮我组织多对多关系的查询结果,下面是其他详细信息。


这是我的查询:

SELECT rt.room_title as rm_name, amn.amnty_title FROM amenities_tbl AS amn LEFT JOIN room_am_link AS ral ON amn.amnty_id = ral.am_id LEFT JOIN rooms_tbl AS rt ON ral.rm_id = rt.room_id;

这是我对查询结果的 foreach 循环(codeigniter):

<?php foreach($result as $row){?>
<tr>
<td><?php  echo $row['rm_name']; ?></td>
<td><?php echo $row['am_title']; ?></td>
</tr>
<?php } ?>  

显示结果如下图,

但我想要的显示如下图,房间标题不再重复:

很抱歉,如果我的问题很长,我只是希望它尽可能清楚。
谢谢你,希望你能帮助我。

【问题讨论】:

  • 你可能需要一个 order by,但除此之外,这与 mysql 关系不大。使用逻辑仅在房间更改时显示房间名称,非常基本的编码。
  • 添加 order by 只会按字母顺序排列。
  • 是的,您显然希望它按房间名称排序。
  • 不,先生,我希望房间名称只显示一次。

标签: php mysql


【解决方案1】:

这样做的简单方法是有一个变量,它将保留第一列中项目的值,然后在循环中,仅当值发生变化时才显示它,例如:

<?php 
   $first_col = NULL;

   foreach($result as $row){ ?>
     <tr>
       <td><?php
             if ($first_col != $row['rm_name']) {
               echo $row['rm_name'];
               $first_col = $row['rm_name'];
             } else {
               echo "&nbsp;";
             }; ?>
      </td>
      <td><?php echo $row['am_title']; ?></td>
   </tr>
<?php } ?>

当然,您的数据应该按第一列排序 - 您需要在 SQL 中添加 ORDER BY

【讨论】:

  • 谢谢先生,非常感谢。
【解决方案2】:
Hi Can you please replace with below php code these will help you

<?php 
$titleArray = array();
foreach($result as $row){
?>
<tr>
<td><?php 
$searchVal = array_search($row['rm_name'], $titleArray); 
if($searchVal !== false){
    echo '';
} else {
    $titleArray[] = $row['rm_name'];
    echo $row['rm_name']; 
}
?></td>
<td><?php echo $row['am_title']; ?></td>
</tr>
<?php } ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多