PHP在行数除以4之后得到<div>

时间:2017-04-15 20:14:14

标签: php mysql

我需要将所有数据分成4列。我已经使用过这种方法,但它不会出现列属性

   $stmt1 = $db->prepare($sql1);
   $stmt5 = $db->prepare($sql1);
   $stmt5->execute();

   $rowcount = $stmt5->rowCount();

   $pages = ceil($rowcount / 4);
   $tempcount = 1;

if ($stmt1->execute(array())) {
   while ($row = $stmt1->fetch()) {
   ?>

       <?php if ($tempcount == $pages) { ?>

         <div class="column">
         <div class="ui bulleted list">

      <?php } ?>

          <a href="" class="item">  </a>

     <?php
     if ($tempcount == $pages) {
      $pages = $pages + $pages; ?>

          </div>
          </div>

     <?php }
     $tempcount++;
      }
       } ?>

如何在获取数据后如何获取此列并在其间添加这些div。

对于示例20数据行20/4 = 5每5个数据后,我需要开始和结束添加

    <div class="column">
    <div class="ui bulleted list">

      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>

   </div>
   </div>
   <div class="column">
    <div class="ui bulleted list">

      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>
      <a href="" class="item">  </a>

   </div>
   </div> 

//等等

结果将是这样的

非常感谢

3 个答案:

答案 0 :(得分:2)

这是一个带注释的正确代码

$tempcount = 0;
$pages = ceil($rowcount / 4);
while ($row = $stmt1->fetch()) {

    // if result of % (Modulo) is zero - you need to start new column
    if ($tempcount % $pages == 0) {?>
    <div class="column">
         <div class="ui bulleted list">
<?php
    }?>
     <a href="" class="item">ITEM</a>
<?php

    // if result of % (Modulo) is (pages - 1) - you need to close previous column
    if ($tempcount % $pages == ($pages - 1)) {?>
        </div>
    </div>
<?php
    }
    $tempcount++;
}

// check if you have to close previous column 
// because it was not closed in a while loop


if (0 < $rowcount) {
    if ($tempcount % $pages != 0) {?>
            </div>
        </div>
    <?php
    }
}

答案 1 :(得分:1)

虽然上面提到的模数方法在这些情况下会有所帮助,但我经常发现从不同的角度编写循环可以帮助整理情况,并使事情更具可读性。

而不是遍历每一行,然后将列插入您认为他们需要的位置。而是循环每个项目,但是在受控计数中,由列包裹。

由于个人偏好,我已将代码切换为使用echo,如果愿意,您仍然可以使用php-breakouts。

  

请注意,这是未经测试的示例代码,只是为了说明这一点:

<?php

$stmt1 = $db->prepare($sql1);
$stmt5 = $db->prepare($sql1);
$stmt5->execute();
$rowcount = $stmt5->rowCount();
$pages = ceil($rowcount / 4);

if ($rowcount) {

  $stmt1->execute(array());

  do {

    $group = '';
    $group .= '<div class="column">';
    $group .= '<div class="ui bulleted list">';

    for ( $i=0; $i<$pages; $i++ ) {
      $row = $stmt1->fetch(); if ( !$row ) { break; }
      // presumably something would be done with $row here
      $group .= '<a href="" class="item"></a>';
    }

    $group .= '</div>';
    $group .= '</div>';

    echo $group;

  } while ( $row );

}

答案 2 :(得分:0)

% modulo会帮助您PHP operators。在您获取时,使用它来创建分隔符。如果使用div并且如果需要,我通常会添加一个带有clear: both的微小div,以确保它在4/8/12 ...结果后突破该行。

$cell++; 
$jumpline = ($cell % 4) ? "" : "<div class=\"spacer\"></div><br />";
$endit = ($cell % 4) ? "" : "</div>";