PHP影响列布局

PHP影响列布局,php,html,mysql,Php,Html,Mysql,我的页面主体的结构是由三列组成的,这些列由MYSQL数据生成,然后使用PHP将其表示为三列 下面是PHP代码和提供三列的布局。我遇到的问题是,如果数据提供了两列宽的布局,那么一切都很好,就像这样 但是,如果数据提供了一个三列宽的布局,那么它看起来是这样的 我认为问题在于第三列上的后面的div标记,但不确定解决问题的最佳方法 这是代码 <?php $columnSelector = 0; // define a column selector ?> <?ph

我的页面主体的结构是由三列组成的,这些列由MYSQL数据生成,然后使用PHP将其表示为三列

下面是PHP代码和提供三列的布局。我遇到的问题是,如果数据提供了两列宽的布局,那么一切都很好,就像这样

但是,如果数据提供了一个三列宽的布局,那么它看起来是这样的

我认为问题在于第三列上的后面的div标记,但不确定解决问题的最佳方法

这是代码

       <?php $columnSelector = 0; // define a column selector ?>
    <?php while($row = mysql_fetch_array($result)) :?>
   <?php if ($columnSelector == 0): ?>

   <div class="row-fluid">
     <article class="span4 mid">
        <div class="img">
            <img src="images/<?php echo $row['image']; ?>" alt="post4" />
            <div class="overlay"></div>
        </div>
        <div class="info">
            <p class="tags">
            <?php   echo $row['event_type']; ?>
            <?php   echo $row['location']; ?>
            </p>
            <h1><a href=""><?php    echo $row['event_title']; ?></a></h1>
            <p class="details">  |  </p>
            <p class="text">
                 <?php  echo $row['event_details_short']; ?>
            </p>

        </div>
    </article>

     <?php elseif ($columnSelector == 1): ?>
    <article class="span4 mid">
        <div class="img">
            <img src="images/<?php echo $row['image_link']; ?>" alt="post4" />
            <div class="overlay"></div>
        </div>
        <div class="info">
            <p class="tags">
            <?php   echo $row['event_type']; ?>
            <?php   echo $row['location']; ?>
            </p>
            <h1><a href=""><?php    echo $row['event_title']; ?></a></h1>
            <p class="details"> <?php   echo $row['date']; ?> |  <?php echo $row['posted_by']; ?></p>
            <p class="text">
                 <?php  echo $row['event_details_short']; ?>
            </p>
        </div>
    </article>


    <?php elseif ($columnSelector == 2): ?>
    <article class="span4 mid">
        <div class="img">
            <img src="images/<?php echo $row['image_link']; ?>" alt="post4" />
            <div class="overlay"></div>
        </div>
        <div class="info">
            <p class="tags">
            <?php   echo $row['event_type']; ?>
            <?php   echo $row['location']; ?>
            </p>
            <h1><a href=""><?php    echo $row['event_title']; ?></a></h1>
            <p class="details"> <?php   echo $row['date']; ?> |  <?php echo $row['posted_by']; ?></p>
            <p class="text">
                 <?php  echo $row['event_details_short']; ?>
            </p>

        </div>
    </article>

    </div>

   <?php endif; ?>
   <?php $columnSelector++; // advance to the next row?>
   <?php $columnSelector %= 3; // reset to zero every third event?>
   <?php endwhile; ?>

可能是if语句不让下面的代码显示出来。
这行:

好的,解决了,问题是这里的最后一个标签:

</article>

</div>
只有一两列显示时需要它,但第三列不需要,所以我用这个替换了它

   </div>
    </article>
   <?php if ($columnSelector == 1){ ?>
   </div>
   <?php } ?>
  <?php endif; ?>

现在,当有三列时,div不显示,布局正确。

但是如果我删除了这一行,那么这些列的结构就不会正确。请使用模板引擎。你在混合代码和HTML。这使得维护你的东西更加困难。请读这篇文章。