我正在建立一个Bootstrap轮播画廊来显示帖子图片。我大部分时间都在工作,但我遇到问题,我的PHP在.item div
内重复了这些图像。在检查了视图源HTML之后,我发现了问题是什么,我知道该怎么做才能修复它,但是我在执行它时遇到了麻烦。
我的问题是使用另一个需要嵌套在我的主echo语句中的echo语句。
我一直在这里和其他一些在其他echo语句中使用echos的网站,但我似乎无法正确执行它。我仍然是PHP的新手,我可能错过了一系列的''和/或""当我试图让事情发挥作用时。如果有人能帮我解决这个问题,我真的很感激。
我需要做的是制作这段代码:
<div class="<?php echo $i == 0 ? 'item active':'item'; ?>" align="center">
<img src='admin/images/".$imrow->img_name."' width='auto' height='auto'/>
</div>
存在于下面代码中的echo "..."
内,因此所有图像可以彼此独立存在。
<?php
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object()){
echo "<img src='admin/images/".$imrow->img_name."' width='auto' height='auto'/>";
}
}
?>
编辑未来参考
以下是我carousel-inner div
工作之前的代码:
<div class="carousel-inner">
<?php
$i = 0;
for ($a = 2; $a < count($files); $a++):
?>
<div class="<?php echo $i == 0 ? 'item active':'item'; ?>" align="center">
<?php
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object()){
echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
echo '</div>';
}
}
?>
</div>
<?php
$i++;
endfor;
?>
</div>
这是完成我需要的版本:
<div class="carousel-inner">
<?php
$i = 0;
for ($a = 2; $a < count($files); $a++):
?>
<?php
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object()){
echo '<div class="' . ($i == 0 ? 'item active' : 'item') . '" align="center">';
echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
echo '</div>';
}
}
?>
<?php
$i++;
endfor;
?>
</div>
答案 0 :(得分:2)
不确定我是否理解你想要实现的目标,但这是我的猜测:
<?php
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
$i = 0;
while ($imrow = $q2->fetch_object()) {
echo '<div class="' . ($i++ === 0 ? 'item active' : 'item') . '" align="center">';
echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
echo '</div>';
}
}
该代码根本不漂亮,但我试图让你当前的代码工作。当然,还有很多其他方法可以实现这一目标。当然,您需要一个未包含在代码示例中的计数器$i
。
以下是另一个选项,您可以使用正确的css类显示开场div。始终将item用作类,只在需要时添加active:
echo '<div class="item' . ($i++ === 0 ? ' active' : '') . '" align="center">';
答案 1 :(得分:1)
我认为这会起作用
echo '<div class="'.($i == 0 ? 'item active':'item').'" align="center"><img src=\'admin/images/\''.$imrow->img_name.'\' width=\'auto\' height=\'auto\'/></div>'
答案 2 :(得分:-3)
据我所知,你可以在启动while循环后关闭php标签,然后添加你需要的代码并再次打开php标签。 E.g。
While(true) { ?>
// html or php code here
<?php }