php - 使用 while 循环将列保持在同一行,直到标题结果不同

标签 php mysql bootstrap-4

我想显示如下所示,但我无法获得任何可以在同一行中并排显示属于某个状态的地址的内容,直到状态发生变化。

<h1>State1</h1>

<div class="row">
   <div class="col-sm-3">
      <h2>City1</h2>
      <p>Address1</p>
   </div>

***如果下一个地址处于相同状态:

   <div class="col-sm-3">
      <h2>City2</h2>
      <p>Address2</p>
   </div>
</div><!-- ROW -->

    <hr>

***地址将位于同一行,直到状态不同,然后关闭 div。

**如果下一个地址不在同一状态

<h1>State2</h1>

<div class="row">
   <div class="col-sm-3">
      <h2>City3</h2>
      <p>Address3</p>
   </div>
...
</div> <!-- ROW -->

我正在使用:

        <?php
        $query = "SELECT * FROM places";
        $select_all_places = mysqli_query($connection, $query);

        $current_state = '';

        while($row = mysqli_fetch_assoc($select_all_places)){
            $p_state = $row['p_state'];
            $p_city = $row['p_city'];
            $p_address = $row['p_address'];

        ?>
            <?php if($current_state != $p_state): ?>
                <h1><?php echo $p_state; ?></h1>
                <?php $current_state = $p_state; ?>
<div class="row">
            <?php endif; ?>

            <div class="col-sm-3">
               <h2><?php echo $p_city; ?></h2>
               <p><?php echo $p_address; ?></p>
            </div>
</div>

        <?php } ?>

最佳答案

您需要按州对地址进行排序,以确保列出一个州的所有地址,然后才转到另一个州的地址。

这段代码可以做到这一点。

<?php
    $select_all_places = mysqli_query($connection,"SELECT * FROM places ORDER BY p_state ASC");
    $current_state = '';
    while($row = mysqli_fetch_assoc($select_all_places))
    {
        if($current_state != $row['p_state'])
        {
            if($current_state!='')
            {
                echo'</div>';
            }
            $current_state = $row['p_state'];
            echo '<h1>'.$row['p_state'].'</h1><div class="row">';
        }
        echo'<div class="col-sm-3"><h2>'.$row['p_city'].'</h2><p>'.$row['p_address'].'</p></div>';
    }
?>

它从数据库中获取排序后的地址。

循环它们并显示 H1 标题,然后状态更改。

如果之前有状态列表,则关闭前一个状态的 div 元素。

关于php - 使用 while 循环将列保持在同一行,直到标题结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54845816/

相关文章:

mysql - 在Sql中通过数字限制多对多关系

mysql - 将大型 XML 文件转换为 MySQL 的最简单方法

javascript - 页面上所有弹出框的水平对齐

html - 删除列表项下的额外填充,证明它

css - SASS 错误 : Incompatible units: 'px' and 'px*px'

php - Symfony 记录到 Docker 容器内的标准输出

javascript - 将 php 数组传递给 javascript,检查数组值并插入新数组

php - 在另一个文件中显示查询的数组结果

php - 从 CLI 执行多个同时的 php 脚本

使用 PDO 进行 PHP 全文搜索