这里有一个小问题。可能需要一些洞察力。我正在向我的网站的访问者显示用户创建的事件。我正在使用while循环来显示所有还没有通过的内容。我的目标是显示两个独立的事件,然后在它们下面显示另外两个事件,以此类推。目前我正在使用flex box css属性来实现这一点。但它只是垂直显示输出,而不是我想要的方式,这意味着它每行只放一个事件,下面是我当前显示事件的输出。
include 'db_connect.php';
$event_type = $_POST['event_type'];
$state = $_POST['state'];
$current_date = date("Y-m-d");
$sql = "SELECT * FROM events WHERE event_type LIKE '%".$event_type."%' AND state LIKE '%".$state."%' AND end_date > '$current_date' ORDER By end_date ASC";
$result = mysqli_query($conn, $sql);
if (isset($_POST['search-events']) && !empty($event_type) && !empty($state)) {
while($row = mysqli_fetch_array($result)) {
$event_name= $row['event_name'];
$image = $row['image'];
$start_date = $row['start_date'];
$end_date = $row['end_date'];
$start_time = $row['start_time'];
$end_time = $row['end_time'];
$street = $row['street'];
$city = $row['city'];
$state = $row['state'];
$zip_code = $row['zip_code'];
$id = $row['event_id'];
echo '<div class="filter-wrap">';
echo '<div id="filter-boxes">';
echo '<div id="list_image"><img src="'.$image.'"></div>';
echo '<div id="list_name">'.$event_name.'</div>';
echo '<div id="list_date">'.$start_date. ' - ' .$end_date. '</div>';
echo '<div id="list_time">' .$start_time. ' - ' .$end_time. '</div>';
echo '<div id="list_location">'.$street.''.$city.''.$state.''.$zip_code.'</div>';
echo '</div>';
echo '</div>';
}
}
然后是我正在使用的css。
.filter-wrap {
display: flex;
flex-direction: row;
padding: 10px;
justify-content: center;
align-items: center;
}
#filter-boxes {
border: 2px solid #999;
text-align: center;
width: 50%;
height: 150px;
}
正如您所看到的,我在容器中使用flex属性,该容器包含保存每个事件的每个单独的框。我将flex方向设置为row,因为我希望它水平显示,然后在每行空间用完后转到下一行。
我尝试了一些方法。我试着切换到css的列计数属性,但是没有得到我所期望的结果。老实说,我可能没有对这个属性做足够的调整。但是我把心思放在了flex box属性上。我也试着把flex方向设置为column,还试着给那些在while循环中每个事件都要重复的box添加一个inline-block显示属性。我在网上找到了一些类似的问题,但不完全是。一个使用javascript,但显然这也可以用php来完成。我还找到了一些文章谈论使用flexbox来居中内容,这不是这里的目标。
1条答案
按热度按时间31moq8wy1#
尝试将
.filter-wrap
div元素移动到while() {}
循环之外。您当前的编码:
将导致以下结构,其中每个
.filter-wrap
仅包含单个子.filter-boxes
,这将始终导致垂直显示:对于横向表示,正确的结构应该是一个
.filter-wrap
由多个.filter-boxes
查尔兹组成:因此,您可以尝试将编码更改为:
代码段演示给你的编码逻辑结果。它是在JS中,但你只需要应用相同的PHP
希望它有帮助,快乐编码!