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 に大きなバグが 1 つだけ見られます: 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

はい、ジョンが言ったように、$URL として $URL がありますが、それぞれの $row を呼び出す配列を参照しています。

もう 1 つは、tbody タグを for each ループの外側で使用したい場合があることです。

于 2012-12-19T21:27:27.473 に答える