You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap 4网格读取MySQL数据后卡片无法并排的问题排查

问题分析与解决方案

嗨,我来帮你排查这个Bootstrap网格失效的问题!你遇到的核心问题在于循环内部重复生成了.container和.row元素,这直接破坏了Bootstrap网格系统的层级结构。

为什么会失效?

Bootstrap的网格布局规则是:.container(或.container-fluid)包裹.row,然后.row里面放置多个.col-*列元素。而你的代码在while循环里,每读取一条MySQL数据就会创建一个新的.container和.row,这就导致每个卡片都被单独放在一行里,自然没法实现并排效果。

修复后的代码示例

你只需要把.container和.row移到循环外面,让所有的.col-sm-4都处于同一个.row下即可:

<?php include_once('includes/head.tpl'); ?>
</head>
<body>
<?php include_once('includes/php/navbar.php'); ?>
<form method="GET" action="action2.php">
    <!-- 把container和row放到循环外面,只创建一次 -->
    <div class="container">
        <div class="row">
            <?php 
            $result = mysqli_query($conn, "SELECT * FROM plans"); 
            while($row = mysqli_fetch_array($result)) { 
            ?>
                <div class="col-sm-4">
                    <label>
                        <input type="radio" name="plan_id" id="plan_id_<?php echo $row['id']; ?>" value="<?php echo $row['id']; ?>" class="card-input-element" />
                        <div class="card-input">
                            <?php echo $row['plan_name']; ?><br>
                            <?php echo $row['plan_cpu']; ?><br>
                            <?php echo $row['plan_memory']; ?><br>
                            <?php echo $row['plan_disk']; ?><br>
                        </div>
                    </label>
                </div>
            <?php } ?>
        </div>
        <input type="submit" name="btn-submit">
    </div>
</form>
</body>

额外小提示

  • 我修改了input的id属性:原来循环里重复使用id="plan_id"不符合HTML规范(id必须唯一),改成id="plan_id_<?php echo $row['id']; ?>"可以保证每个元素id唯一。
  • 如果想让卡片样式更贴合Bootstrap风格,可以给.card-input添加.card、.card-body这类内置样式类,提升视觉效果。

内容的提问来源于stack exchange,提问作者Erik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:27:38