我试图在php中将数组显示为HTML表,但是存在问题。我在堆栈溢出中找到了几个例子,但它们对我的情况不起作用。
控制器:
<?php include('inc/db_connect.php');?>
<?php
try
{
$sql = "SELECT id GroupName, VideoTITLE, ByArtist FROM videoclip";
$result = $pdo->query($sql);
}
catch(PDOException $e)
{
$error = 'unable to fetch data: '.$e->getMessage();
include'error.html.php';
exit();
}
$URLS = array();
while ($row = $result->fetch())
{
$URLS[] = array('id' => $row['id'], 'GroupName' => $row['GroupName'], 'VideoTITLE' => $row['VideoTITLE'], 'ByArtist'=> $row['ByArtist'] );
}
HTML:
<div id="table_admin" class="span7">
<h3>Videoclip List</h3>
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>Song name</th>
<th>Group name </th>
<th>Artist </th>
</tr>
</thead>
<?php foreach ($URLS as $URL){
echo'<tbody>';
echo'<tr>';
echo'<td>'. $row['VideoTITLE']."</td>";
echo'<td>'. $row['GroupName'].'</td>';
echo'<td>'. $row['ByArtist'].'</td>';
echo'<tr>';
echo'</tbody>';
}
?>
</table>
</div>
答案 0 :(得分:10)
你很亲密:
</thead>
<tbody>
<?php
foreach ($URLS as $URL){
echo'<tr>';
echo'<td>'. $URL['VideoTITLE']."</td>";
echo'<td>'. $URL['GroupName'].'</td>';
echo'<td>'. $URL['ByArtist'].'</td>';
echo'<tr>';
}
?>
</tbody>
由于您正在使用$URLS
数组的值并调用每个$URL
,因此您需要为每行的值引用$URL
。不是您最初用于从数据库结果中填充数组的$row
变量。
仅供参考,您可能需要查看htmlentities()
以逃避您的数据,以帮助防止XSS攻击。
答案 1 :(得分:2)
假设你的fetchRow数据很好,我只看到你的html中的一个主要错误:在你的foreach循环中将$ row更改为$ URL。此外,您可以将PHP与HTML混合使其更漂亮:
<?php foreach ($URLS as $URL) { ?>
<tr>
<td><?php echo $URL['VideoTITLE']; ?></td>
<td><?php echo $URL['GroupName']; ?></td>
<td><?php echo $URL['ByArtist']; ?></td>
<tr>
<?php } ?>
答案 2 :(得分:1)
是的,正如约翰所说,你有$ URL作为$ URL,但是你引用了一个数组,在每个中调用$ row。
另一件事是你可能想要在每个循环之外取tbody标签
答案 3 :(得分:1)
从数据库获得结果后,请按照
<?php
echo '<table>';
echo '<thead>';
echo '<tr>';
echo '<th>Song name</th>';
echo '<th>Group name </th>';
echo '<th>Artist </th>';
echo '</tr>';
echo '</thead>'
echo '<tbody>';
foreach($URLS as $URL) {
echo'<tr>';
echo'<td>'. $URL['VideoTITLE']."</td>";
echo'<td>'. $URL['GroupName'].'</td>';
echo'<td>'. $URL['ByArtist'].'</td>';
echo'<tr>';
}
echo '</tbody>';
echo '</table>';
?>
我希望这可以帮到你