Строка из базы данных отображается некорректно, кроме первой строки

#php #html

#php #HTML

Вопрос:

Первая строка этой таблицы отображается правильно и по центру, в то время как другие строки выглядят так, как будто они просто повторяются вместо того, чтобы выглядеть так, как будто они являются частью таблицы.

Это часть моего кода:

 <table style="width:20%">
 <tr>
   <th>ID</th>
   <th>Nume</th>
   <th>Prenume</th>
 </tr>
 //fetching data from database
 <tr>
   <td><?php echo $data['id'];?></td>
   <td><?php echo $data['nume'];?></td>
   <td><?php echo $data['prenume'];?></td>
 </tr>
</table>
  

Предполагается, что код добавит записанного пользователя в базу данных и отобразит всех пользователей в таблице рядом с ним.

Любая помощь приветствуется! Спасибо! (весь код приведен ниже)

 <!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form action="index.php" method="post">
      <input type="text" name="nume" placeholder="nume" required>
      <input type="text" name="prenume" placeholder="prenume" required>
      <input type="submit" name="sub" value="Adauga in baza de date">
      <br>
    </form>
    <table style="width:20%">
      <tr>
        <th>ID</th>
        <th>Nume</th>
        <th>Prenume</th>
      </tr>
    <?php
      if(isset($_POST['sub']))
      {
        $pdo = new PDO("mysql:host=localhost;dbname=liamed", "root", "");
        $nume = $_POST['nume'];
        $prenume = $_POST['prenume'];
        $q = "insert into users(nume,prenume)values(:nume,:prenume)";
        $r = $pdo->prepare($q);
        $r->execute(array(":nume"=>$nume, ":prenume"=>$prenume));
      }
      $pdo = new PDO("mysql:host=localhost;dbname=liamed", "root", "");
      $query = "select * from liamed.users";
      $d = $pdo->query($query);
      foreach ($d as $data){

    ?>

    <tr>
      <td><?php echo $data['id'];?></td>
      <td><?php echo $data['nume'];?></td>
      <td><?php echo $data['prenume'];?></td>
    </tr>
  </table>
  </body>
<?php }
?>
</html>
  

Комментарии:

1. Одного подключения для каждого скрипта более чем достаточно

2. @RiggsFolly да, вообще без какой-либо функции fetch()

3. @Yourcommon Sense Как я могу использовать fetch() в этом случае? Я только начинаю изучать PHP и PDO. Любая помощь приветствуется! Редактировать: я следую этому руководству: https://www.youtube.com/watch?v=oti378RVNQc

4. как вы думаете, почему ваша проблема связана с какой-либо выборкой ()? это явно проблема с форматированием HTML. Откройте исходный код страницы и посмотрите, что с ним не так. проблема явно очевидна

5. Не требуется, как напомнил мне YCS 🙂 Мой комментарий был ошибочным. Извините. Следовательно, удалено

Ответ №1:

У вас есть конец таблицы HTML, включенный в ваш цикл, исправьте беспорядок. Переместите это за пределы цикла, и вы должны быть отсортированы 🙂

 foreach ($d as $data) :
?>

    <tr>
      <td><?php echo $data['id'];?></td>
      <td><?php echo $data['nume'];?></td>
      <td><?php echo $data['prenume'];?></td>
    </tr>
<?php
endforeach;
?>
    </table>
</body>