Отображение данных из базы данных в таблицу с использованием ajax, php и html - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь отобразить данные из базы данных в таблицу, используя ajax, php и html, без нажатия каких-либо кнопок или обновления. Вот shipping.php, где находится код php:

<?php
      require_once '../core/init.php';
      if(!is_logged_in()){
        header('Location: login.php');
      }
      include 'includes/head.php';
      include 'includes/navigation.php';
      $txnQuery = "SELECT t.id, t.cart_id, t.first_name, t.last_name, t.description, t.txn_date, t.grand_total, c.items, c.paid, c.shipped
        FROM transactions t
        LEFT JOIN cart c ON t.cart_id = c.id
        WHERE c.paid = 1 AND c.shipped = 0
        ORDER BY t.txn_date";
      $txnResults = $db->query($txnQuery);

while($order = mysqli_fetch_assoc($txnResults)){
    $data = "
        <tr>
          <td><a href=\"orders.php?txn_id=". $order['id'] ."\" class=\"btn btn-sm btn-info\">Details<span class=\"glyphicon glyphicon-info-sign\"></span></a></td>
          <td>".$order['first_name'].  " ". $order['last_name'] ."</td>
          <td>".$order['description'] ." </td>
          <td>". money($order['grand_total']) ."</td>
          <td>". pretty_date($order['txn_date']) ."</td>
                </tr>
        ";
}
echo $data;
?>

А вот index.php, где html и ajax-код:

<?php
  require_once '../core/init.php';
  if(!is_logged_in()){
    header('Location: login.php');
  }
  include 'includes/head.php';
  include 'includes/navigation.php';

?>

<div class="col-lg-12">
  <h4 class="text-center">Orders To Ship       <span class="glyphicon glyphicon-list-alt" style="font-size:23px;"></span></h4>
  <table class="table table-sm table-bordered table-striped">
    <thead>
      <th></th><th>Name</th><th>Description</th><th>Total</th><th>Date</th>
    </thead>
    <tbody id="table-to-be-inserted">

    </tbody>
  </table>
</div>
<script>
function getdata(){
    $.ajax({
                url : "shipping.php",
                success: function(data){
                    $("#table-to-be-inserted").html(data);
                    setTimeout(getdata, 1000);
                }
        });
}
  //Call the function
   getdata();
</script>

Теперь проблема в том, что отображаются только последние данные, введенные в базу данных, а не все данные в базе данных (у меня есть другое имя в базе данных). Кроме того, данные не отображаются в соответствующем месте в таблице. Кроме того, в консоли говорится, что синхронный XMLHttpRequest [Deprecation] в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной помощи, проверьте https://xhr.spec.whatwg.org/, Я не знаю, вызывает ли это проблему или нет на самом деле.

Как видно на этом изображении

1 Ответ

0 голосов
/ 02 апреля 2019

Причина, по которой отображаются только последние данные, заключается в том, что вы заменяете значение в $data снова и снова в цикле.Это должно быть так:

while($order = mysqli_fetch_assoc($txnResults)){
    $data .= "
        <tr>
          <td><a href=\"orders.php?txn_id=". $order['id'] ."\" class=\"btn btn-sm btn-info\">Details<span class=\"glyphicon glyphicon-info-sign\"></span></a></td>
          <td>".$order['first_name'].  " ". $order['last_name'] ."</td>
          <td>".$order['description'] ." </td>
          <td>". money($order['grand_total']) ."</td>
          <td>". pretty_date($order['txn_date']) ."</td>
        </tr>
        ";
}

Используйте .= для объединения вашей переменной $data.

Во-вторых, можете ли вы точно указать, как он не отображается в соответствующем элементе?Мол, где это заканчивается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...