我正在尝试使用div显示数据库中的数据。我想把返回的数据分成3列,到目前为止,我只能把数据分成2列。
$column = '<div class="col-lg-6">';
$modulecounter = 0;
$moduletotalquery = "SELECT COUNT(MODULEID) AS MODULEID FROM ASMODULERIGHTS";
$moduletotalsql = oci_parse($conn, $moduletotalquery);
oci_execute($moduletotalsql);
$moduletotalrow = oci_fetch_array($moduletotalsql);
$modulequery = "SELECT MODULEID, MODULEDESC FROM ASMODULERIGHTS ORDER BY MODULEID";
$modulesql = oci_parse($conn, $modulequery);
$moduleexec = oci_execute($modulesql);
if($moduleexec){
while($modulerow = oci_fetch_array($modulesql)){
$modulecounter++;
$moduleid = "m". $modulecounter;
$column .= '<div class="col-lg-auto">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input modulerights" id="'. $moduleid .'">
<label class="custom-control-label" for="'. $moduleid .'">'. $modulerow['MODULEDESC'] .'</label>
</div>
</div>';
if ($modulecounter == floor($moduletotalrow['MODULEID'] / 2)) {
$column .= '</div><div class="col-lg-6">';
}
}
}
$column .= '</div>';
echo $column;发布于 2020-03-11 16:11:29
将数据分成块,然后将<div>添加到块中:
<?php
$modulecounter = 0;
$moduletotalquery = "SELECT COUNT(MODULEID) AS MODULEID FROM ASMODULERIGHTS";
$moduletotalsql = oci_parse($conn, $moduletotalquery);
oci_execute($moduletotalsql);
$moduletotalrow = oci_fetch_array($moduletotalsql);
$modulequery = "SELECT MODULEID, MODULEDESC FROM ASMODULERIGHTS ORDER BY MODULEID";
$modulesql = oci_parse($conn, $modulequery);
$moduleexec = oci_execute($modulesql);
$nrows = oci_fetch_all($modulesql, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW+OCI_ASSOC);
$column = '';
if(count($nrows) > 0){
$divideCount = ceil(count($nrows)/3);
$results = array_chunk($res ,$divideCount);
foreach($results as $result){
$column .= '<div class="col-lg-6">';
foreach($result as $res){
$modulecounter++;
$moduleid = "m". $modulecounter;
$column .= '<div class="col-lg-auto">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input modulerights" id="'. $moduleid .'">
<label class="custom-control-label" for="'. $moduleid .'">'. $res['MODULEDESC'] .'</label>
</div>
</div>';
}
$column .= '</div>';
}
}
echo $column;示例输出:- https://3v4l.org/TlJT2
发布于 2020-03-12 04:32:58
事实是:我以前从来没有用过甲骨文,也从来没有回答过甲骨文的问题,但快速浏览一下php手册就会发现,最初的帖子做了太多的查询,Anant的答案根本不能像帖子那样工作。
下面是一个脚本,它使用模数计算来确定是否应该创建一个新列。如果模数计算结果为零,则需要一个新列。如果$i为零,则还没有要关闭的列,因为它是循环的第一次迭代。如果结果集中有任何行,循环将不会关闭最后一列--这是在循环结束后有条件地完成的。
$stmt = oci_parse($conn, "SELECT MODULEID, MODULEDESC FROM ASMODULERIGHTS ORDER BY MODULEID");
oci_execute($stmt);
$count = oci_fetch_all($stmt, $result, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
$maxPerColumn = ceil($count / 3);
$output = '';
for ($i = 0; $i < $count; ++$i) {
if (!($i % $maxPerColumn)) {
if ($i) {
$output .= '</div>';
}
$output .= '<div class="col-lg-4">';
}
$output .= '<div class="col-lg-auto">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input modulerights" id="m'. $i .'">
<label class="custom-control-label" for="m'. $i .'">' . $result[$i]['MODULEDESC'] . '</label>
</div>
</div>';
}
if ($count) {
$output .= '</div>';
}
echo $output;对于一些开发人员来说,使用array_chunk()可能是一个更有吸引力的解决方案,尽管有内部循环,因为需要理解条件逻辑。请注意,$i计数器丢失了,为了简单起见,改用了MODULEID
$output = '';
foreach (array_chunk($result, ceil($count / 3)) as $group) {
$output .= '<div class="col-lg-4">';
foreach ($group as $row) {
$output .= '<div class="col-lg-auto">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input modulerights" id="m'. $row['MODULEID'] .'">
<label class="custom-control-label" for="m'. $row['MODULEID'] .'">' . $row['MODULEDESC'] . '</label>
</div>
</div>';
}
$output .= '</div>';
}
echo $output;引导程序列的总宽度为12,因此这3列中的每一列都应该在类声明中使用4。
https://stackoverflow.com/questions/60630383
复制相似问题