需要帮助修改echo语句以适应其中的另一个echo语句

时间:2018-02-05 21:16:00

标签: php

我正在建立一个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>

3 个答案:

答案 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 }