我想显示如下,但是在状态改变之前,我将无法并排显示在同一行中并排属于某个状态的地址。

<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元素。

10-08 16:47