Отображение Php Array приводит к таблице Html

Я пытался отобразить массив в 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> 

Related of "Отображение Php Array приводит к таблице Html"

Вы близки:

 </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 } ?>