为了账号安全,请及时绑定邮箱和手机立即绑定

按字母将MySQL数据划分为四个相等的引导程序行顺序

按字母将MySQL数据划分为四个相等的引导程序行顺序

PHP
大话西游666 2021-05-06 13:09:55
我有一个类别表,我想将类别数据动态显示为4个相等的自举4行,并且数据必须按字母顺序显示。首先,我计算数据的数量并除以4,然后运行4个查询以找到前25个数据,并在第二个查询中查找下一个25个数据,依此类推,但是正在寻找更好的解决方案。$catCount = Category::all()->count();$inOneRow = intval( $catCount / 4);我想要的是
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

假设类别是类别名称的表-您可以一次选择所有类别,然后在查询中使用ORDER BY子句:


$query = 'SELECT name FROM db.categories ORDER BY name ASC;';

您也可以在结果集上使用sort:


$query = 'SELECT name FROM db.categories;';

/* execute query here... */

sort($resultSet);

假设您这样做了,那么使用引导网格就可以轻松进行样式设置(注意小提琴中的模拟结果集):


<?php

const NUM_COLS = 4;

$numResults = count($dummyResult);

$numPerCol = round($numResults / NUM_COLS);

?>

<div class="container">

    <div class="row">

        <?php

            for($i = 0, $col = 0; $col < NUM_COLS; $col++){

                echo '<div class="col">';

                for($colLimit = min($numResults, $i + $numPerCol); $i < $colLimit; $i++){

                    echo '<div class="row">'.$dummyResult[$i]['category'].'</div>';

                }

                echo '</div>';

            }

        ?>

    </div>

</div>

更容易理解,尽管示例可能更慢:


<?php

const NUM_COLS = 4;

$numResults = count($dummyResult);

$numPerCol = round($numResults / NUM_COLS);

?>

<div class="container">

    <div class="row">

        <?php

            for($i = 0; $i < NUM_COLS; $i++){

                echo '<div class="col">';

                foreach( array_splice($dummyResult, 0, $numPerCol) as $row ){

                    echo '<div class="col">'.$row['category'].'</div>';

                }

                echo '</div>';

            }

        ?>

    </div>

</div>

注意:除非另作样式,否则容器将是其父容器的100%宽度。默认情况下,列宽将相等。请参阅Bootstrap网格


查看完整回答
反对 回复 2021-05-28
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信