Я пытался отобразить массив в php для таблицы HTML. Но похоже, что есть проблема. Я изучаю 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>
Вы близки:
</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
, изначально использованная для заполнения массива из результатов базы данных.
FYI, вы можете захотеть просмотреть htmlentities()
чтобы избежать ваших данных, чтобы предотвратить атаки XSS.
да, как сказал Джон, у вас есть $ URLs как $ URL, но затем вы ссылаетесь на массив, вызывающий $ row в каждом для каждого.
другое дело, что вы можете захотеть взять теги tbody за пределами каждого цикла
Предполагая, что ваши данные из fetchRow хороши, я вижу только одну серьезную ошибку в вашем html: измените $ row на $ URL в вашем цикле foreach. Кроме того, вы можете смешивать 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 } ?>