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