php表格网格布局

时间:2013-07-14 06:24:50

标签: php html-table

我想在网格布局中获取PHP表中的数据。所以我制作了这段代码。我不知道出了什么问题,或者我错过了什么。我希望该表有三列,但它在一列中显示该表。任何帮助将不胜感激。

以下是代码:

<html>
<head>
<title>PAGINATION FILTER</title>
</head>
<body>
<?php include 'conn.php';?>
<?php

    $stmt=$con->prepare('SELECT author, book_name, language FROM bk_tst_fltr ORDER BY id LIMIT 8');
    $stmt->execute();
    $stmt->bind_result($author, $book_name, $language);
    $stmt->store_result();
    $i=0;
    ?>
    <table border="1" cellpadding="10">
    <?php
    while($stmt->fetch()){
        if($i % 3 == 0){
        ?><tr><td><?php echo $author,"\n</br>",$book_name,"\n</br>", $language ;?></td>
    <?php
    }}
    ?></tr></table>


</body>
</html>

2 个答案:

答案 0 :(得分:0)

您的if($i % 3 == 0){行只是让您只显示每第三个结果 - 或者如果您实际上在任何地方增加了$i变量,那就是它。

您可能希望使用该逻辑来启动新行 - 但仍会输出每一行。

尝试这样的事情:

<table border="1" cellpadding="10"><tr>
<?php
$i = 0;
while($stmt->fetch()){
    if ($i > 0 && ($i % 3 == 0)) { // every third row, but not the first time
        echo("</tr><tr>");
    }
    echo("<td>{$author}<br>{$book_name}<br>{$language}</td>");
    $i++;
}
?>
</tr></table>

一开始,它启动一个表和第一行 - 然后它为<td>循环输出一个新的foreach单元格,用于找到的每个结果 - 以及{{1} }在最后关闭。这将导致所有结果并排放在一行上。

然后最后一步是在每第三行(<tr>)之前 - 但不是第一次($i % 3 == 0)我们要关闭当前行并开始一个新行:{{1} }。

我还修了几个其他的小问题:

  1. 您实际上没有增加原始代码中的$i > 0变量
  2. 您为每个输出的结果开始一个新的</tr><tr>,但只关闭其中一个(在循环结束后的最后)。
  3. 您使用$i作为换行符 - 这是无效的HTML。您需要<tr></br>代替。

答案 1 :(得分:0)

此方法使用适当数量的<td>标记完成,因此每行总共有3个(或者当最后一行中只有1个数据项时,2个跨度为2):

<table border="1" cellpadding="10">
    <tr>
    <?php
    $i = 0;
    $html = '';
    while($stmt->fetch()){
        $html .= '<td>'.$author."\n</br>".$book_name."\n</br>". $language.'</td>';
        if ($i%3 == 2){
            $html .= "</tr>\n<tr>";
        }
        $i++;
    }
    //use $i%3 to figure out how to finish off table
    if ($i%3 == 0){
        $html = substr($html, 0, -5);//get rid of last <tr> tag
    } elseif($i%3 == 2) {
        $html .= '<td>&nbsp;</td><tr>';
    } else {
        $html .= '<td span="2">&nbsp;</td><tr>';
    }
    echo $html;
    ?>
</table>