4

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

4 回答 4

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 攻击。

于 2012-12-19T21:22:34.057 回答
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 } ?>
于 2012-12-19T21:28:17.040 回答
1

是的,正如约翰所说,你有 $URLs 作为 $URL,但是你指的是一个数组,在每个中调用 $row。

另一件事是您可能希望将 tbody 标签放在 for each 循环之外

于 2012-12-19T21:27:27.473 回答
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>'; 
?>

我希望这对你有帮助

于 2018-04-19T14:01:37.093 回答