使用表格对齐span类

时间:2015-12-06 13:10:07

标签: php mysqli html-table

我有一个span类输出,我需要将其集成到表中。我怎样才能使用table" tr" " TD"下面的跨度类?

table <tr> <td>


 <?php
include_once('database_conn.php');
$sqlCDs = 'SELECT CDID, CDTitle, CDYear, catDesc, CDPrice FROM nmc_cd b inner join nmc_category c on b.catID = c.catID WHERE 1 order by CDTitle';
$rsCDs = mysqli_query($conn, $sqlCDs);
while ($CD = mysqli_fetch_assoc($rsCDs)) {
        echo "\t<div class='item'>
            <span class='CDTitle'>{$CD['CDTitle']}</span>
            <span class='CDYear'>{$CD['CDYear']}</span>
            <span class='catDesc'>{$CD['catDesc']}</span>
            <span class='CDPrice'>{$CD['CDPrice']}</span>
            <span class='chosen'><input type='checkbox' name='CD[]' value='{$CD['CDID']}' title='{$CD['CDPrice']}' onchange='isChecked();' onclick='getTotalsum()'/></span>
        </div>\n";
}
?>

样品:

echo "<tr><td>";
                echo "Column1";
                echo "</td><td>";  
                echo "Column2";
                echo "</td><td>";  
                echo "Column3";
                echo "</td><td>";  
                echo "Column4";
                echo "</TD></tr>";  

1 个答案:

答案 0 :(得分:1)

显示:

  • 多个CD数据作为列,每个CD都有自己的行
  • 全部包含在适当的表格中
  • 如果没有结果,安全地不提供任何内容

尝试:

<?php
include_once('database_conn.php');

$sqlCDs = 'SELECT CDID, CDTitle, CDYear, catDesc, CDPrice FROM nmc_cd b inner join nmc_category c on b.catID = c.catID WHERE 1 order by CDTitle';

if ($rsCDs = mysqli_query($conn, $sqlCDs)) {

    // HTML table start
    echo "<table>";

    // table head
    echo "\t<thead><tr>
        <th>CD Title</th>
        <th>CD Year</th>
        <th>Description</th>
        <th>Price</th>
        <th>Chosen</th>
        </tr></thead>";

    /* fetch associative array */
    while ($CD = mysqli_fetch_assoc($rsCDs)) {

        echo "\t<tr>
                <td class='CDTitle'>{$CD['CDTitle']}</td>
                <td class='CDYear'>{$CD['CDYear']}</td>
                <td class='catDesc'>{$CD['catDesc']}</td>
                <td class='CDPrice'>{$CD['CDPrice']}</td>
                <td class='chosen'><input type='checkbox' name='CD[]' value='{$CD['CDID']}' title='{$CD['CDPrice']}' onchange='isChecked();' onclick='getTotalsum()'/></td>
                </tr>\n";

    }

    /* free result set */
    mysqli_free_result($rsCDs);

    // HTML table close
    echo "</table>\n";

}
?>

以下是解释的变化:

PHP逻辑

假设您的原始MySQL和SQL查询有效,只需要进行一些细微的更改即可使其正常工作,其中大部分都是您的原始代码。

代码逻辑的主要变化是处理没有SQL结果时会发生什么。

在使用<divs><spans>的原始代码中,您已经将此工作正常了:

  • 如果有结果,那么多个<divs>内有<spans>,会呈现,这很好
  • 如果没有结果,那么没有<divs><spans>呈现,这很好

然而,示例PHP代码似乎:

  • 如果有结果,则会开始呈现<table>以及以<tr><td>...
  • 开头的多条记录
  • 如果没有结果,那么它仍然只是在
  • 内没有记录的情况下开始渲染<table>

这是因为您包含的示例PHP代码似乎在任何PHP检查是否存在SQL结果之前将HTML表放在第一位,因此当存在SQL结果时它会呈现表的其余部分以便大小写,但是当没有SQL结果时,你最终会启动HTML表但没有完成,因此你可能会遇到不完整/破坏HTML的风险

为了解决这个问题,我们引入了if (语句来检查我们,如果有SQL结果,并且只有存在SQL结果,那么就开始呈现HTML表。因此,如果没有结果,那么就像使用<div><spans>的原始代码一样,它应该安全地渲染任何内容。

mysqli_free_result($rsCDs);将释放资源。

PHP逻辑重组基于来自mysqli_result::fetch_assoc documentation示例#2程序样式

HTML

// table head开头的代码块只是为了引入HTML列标题。这是可选的,如果您不喜欢标题,可以删除它。

</table>是正确关闭HTML表格。

附加说明

在测试此代码之后,请记住它只关注HTML表和PHP方面,但HTML可能会影响您的CSS和JavaScript,因此您可能需要花一些时间来检查和调整CSS以及JavaScript以使用它们新的HTML。