Держите столбцы в одной строке, пока результат заголовка не станет другим, используя цикл while - PullRequest
0 голосов
/ 23 февраля 2019

Я хотел бы отобразить, как показано ниже, но я не могу получить ничего, что будет отображать адреса, принадлежащие определенному состоянию, рядом в одной строке, пока состояния не изменятся.

<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 } ?>

1 Ответ

0 голосов
/ 23 февраля 2019

Вам нужно упорядочить адреса по штатам, чтобы убедиться, что вы перечислили все одно состояние и только затем переходите к адресам другого штата.

Этот код сделает это.

<?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 предыдущего состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...