我需要将所有数据分成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>
//等等
结果将是这样的
非常感谢
答案 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>";