在Html表中显示Php Array结果

时间:2012-12-19 21:20:38

标签: php

我试图在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>

4 个答案:

答案 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>'; 
?>

我希望这可以帮到你