PHP 在<div>行数除以 4 后进入两者之间

  • 本文关键字:两者之间 div PHP 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> 

//等等

结果将就像这样

非常感谢

这是一个具有注释的正确代码

$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
    }
}

虽然上面提到的模型方法将在这些情况下有所帮助,但我经常发现,从不同的角度写下您的循环可以帮助解决情况,使事情变得更加可读。p>而不是循环穿过每一行,然后将列插入您认为需要的列。而是循环每个项目,但以列包裹的受控计数。

我将代码切换到使用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 );
}

% modulo将帮助您PHP操作员。当您获取时,使用它来创建分隔线。如果使用div并在需要时,我通常会使用clear: both添加一个小div,以确保其在4/8/12之后打破线...结果。

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

相关内容

最新更新