本文深入探讨了在使用php循环从数据库动态生成html表格时,css样式仅应用于首行的问题。核心原因在于
结束,并且所有的行(
考虑以下常见的错误代码示例:
<?php // ... 数据库连接和查询代码 ... if (isset($_POST["submit"])) { // ... 查询执行 ... ?> <table> <tr> <th>Project</th> <th>Question</th> <th>Sample</th> </tr> <?php for ($a=0;$row = $sth->fetch();$a++) { ?> <tr> <td><?php echo $row->Proj_Name; ?></td> <td><?php echo $row->Question;?></td> <td><?php echo $row->sample;?></td> <br><br> <!-- 注意:此处的<br>在表格单元格内是不规范的 --> </tr> </table> <!-- 错误:</table>标签在此处被错误地放置在循环内部 --> <?php } } ?>
在这段代码中,
闭合标签被放置在了for循环的内部。这意味着每当循环迭代一次,生成一个
标签就会立即出现,从而提前关闭了当前的HTML表格。当循环再次迭代时,新生成的
之间,从而正常应用CSS样式。
正确的HTML表格结构与PHP实现
要解决上述问题,核心在于确保
标签正确地包裹住所有由PHP循环生成的
标签则应在循环结束之后输出。
立即学习“PHP免费学习笔记(深入)”;
以下是修正后的代码示例:
<?php $con = new PDO("mysql:host=localhost;dbname=data",'root','admin123'); if (isset($_POST["submit"])) { $str = $_POST["search"]; $sth = $con->prepare("SELECT * FROM `questions` WHERE question LIKE '%$str%'"); $sth->setFetchMode(PDO:: FETCH_OBJ); $sth -> execute(); ?> <table> <tr> <th>Project</th> <th>Question</th> <th>Sample</th> </tr> <?php for ($a=0;$row = $sth->fetch();$a++) { ?> <tr> <td><?php echo $row->Proj_Name; ?></td> <td><?php echo $row->Question;?></td> <td><?php echo $row->sample;?></td> <!-- 移除不规范的 <br><br>,表格内应使用CSS控制间距或布局 --> </tr> <?php } ?> </table> <!-- 修正:</table>标签现在位于循环外部,确保包裹所有行 --> <?php } ?>
通过将标签移到for循环之外,它现在能够正确地在所有数据行都被生成之后才关闭表格。这样,所有的
和 | 等表格元素定义的CSS样式。
最佳实践与注意事项 |
---|
等标签是否被错误地提前闭合。
标签被放置在
总结
CSS样式仅应用于PHP动态生成HTML表格首行的根本原因,在于闭合标签被错误地放置在循环内部,导致表格结构提前终止。通过将
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END