我需要将所有数据分为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>";