我正在使用Bootstrap 3,PHP& amp; MySQL使用一些示例代码,用于在专家交换机上找到的Bootstrap轮播滑块,该滑块使用heredoc语法自动生成“活动项”标签。
我知道我可以简单地使用另一个滑块,因为这非常具有挑战性,但必须有一种方法可以使它工作。
因为我在滑块上添加了一个图像叠加层,并且管理区域中的数据库代码启用/禁用哪个有效,我一直在撕扯我的头发几个小时,但是我需要它只显示“overlay div”如果在前端的数据库中选择它。
我在名为“overlay”的横幅下添加了一个数据库字段,其中1 =启用,0 =禁用。
如何将其实施到以下来源?使用简单的while循环可以轻松实现任何其他滑块,但是这个bootstrap轮播是一场噩梦!
<div class="container">
<div id="banners" class="carousel slide shadow" data-ride="carousel">
<?php
$bresult = mysql_query("SELECT * FROM banners WHERE id <> 1 ORDER BY iorder ASC") or die(mysql_error());
// SETTING FOR INITIAL ITEM IS 'ITEM ACTIVE'
$active = ' active';
$display_blockCarousel = NULL;
// ITERATE OVER EACH ROW OF THE RESULTS SET
while ($row = mysql_fetch_assoc($bresult))
{
$ID = $row['id'];
$iname = $row['main_image']; // banner image
$www = $row['url'];
$caption = $row['caption'];
$alt = $row['alt'];
$iorder = $row['iorder']; // banner order
// CREATE THE HTML STRING USING HEREDOC SYNTAX
$tag = <<<EOD
<div class="item$active">
<a href="$www"><img class="img-responsive" src="images/banner_images/$iname" alt="$alt"></a>
<div class="carousel-caption"><h3>$caption</h3></div>
</div>
EOD;
// RESET THE 'ACTIVE' ELEMENT
$active = NULL;
// APPEND THE HTML STRING TO THE VARIABLE
$display_blockCarousel .= $tag;
// END OF THE WHILE LOOP
}
?>
<div class="carousel slide" id="banners">
<div class="overlay"></div>
<div class="carousel-inner"> <!--- OVERLAY! --->
<?php echo "$display_blockCarousel"; ?>
</div><!-- / carousel-inner -->
</div> <!-- / carousel slide -->
<!-- Carousel nav -->
<a class="carousel-control left" href="#banners" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span>
</a>
<a class="carousel-control right" href="#banners" data-slide="next">
<span class="glyphicon glyphicon-chevron-right"></span>
</a>
</div>
</div>
编写源代码的另一种方法是(没有heredoc语法):
<?php
$bresult = mysql_query("SELECT * FROM banners ORDER BY iorder ASC") or die(mysql_error());
$rows = array();
while ($row = mysql_fetch_assoc($bresult)) {
$rows[] = $row;
}
?>
<div class="container">
<div id="banners" class="carousel slide shadow" data-ride="carousel">
<div class="carousel-inner" role="listbox">
<?php $i = 1; ?>
<?php foreach ($rows as $row): ?>
<?php $item_class = ($i == 1) ? 'item active' : 'item'; ?>
<div class="<?php echo $item_class;?>">
<a href="<?php echo $row['url']; ?>"><img src="<?php echo 'images/banner_images/'. $row['main_image']; ?>" alt="<?php echo $row['alt']; ?>" /></a>
<div class="container">
<div class="carousel-caption"><h3><?php echo $row['caption']; ?></h3></div>
</div>
</div>
<?php $i++; ?>
<?php endforeach; ?>
</div>
<!-- Carousel nav -->
<a class="carousel-control left" href="#banners" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span></a>
<a class="carousel-control right" href="#banners" data-slide="next">
<span class="glyphicon glyphicon-chevron-right"></span></a>
</div> <!-- / carousel slide -->
<?php if($row['overlay']==="1"){ echo '<div class="overlay"></div>'; } ?>
<!--- no way of using an if statement as outside the loop! ---->
</div>
如你所见
<?php if($row['overlay']==="1"){ echo '<div class="overlay"></div>'; } ?>
<!--- no way of using an if statement as outside the loop! ---->
没有办法单独检查“overlay”数据库字段是否等于1,因为它在循环外部,并且此div需要正好在这里工作。我错过了什么吗?