我有一个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>";
答案 0 :(得分:1)
显示:
尝试:
<?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";
}
?>
以下是解释的变化:
假设您的原始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程序样式
以// table head
开头的代码块只是为了引入HTML列标题。这是可选的,如果您不喜欢标题,可以删除它。
</table>
是正确关闭HTML表格。
在测试此代码之后,请记住它只关注HTML表和PHP方面,但HTML可能会影响您的CSS和JavaScript,因此您可能需要花一些时间来检查和调整CSS以及JavaScript以使用它们新的HTML。