我想显示如下,但是在状态改变之前,我将无法并排显示在同一行中并排属于某个状态的地址。
<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元素。