使用ajax,php和html将数据库中的数据显示到表中

时间:2019-04-02 01:27:32

标签: php ajax html5

我正尝试使用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>

现在,问题在于仅显示输入到数据库中的最后一个数据,而不显示数据库中的所有数据(我在数据库中有另一个名称)。此外,数据未显示在表中的相应位置。另外,在控制台中它说不赞成使用[Deprecation]主线程上的同步XMLHttpRequest,因为它对最终用户的体验有不利影响。要获得更多帮助,请检查https://xhr.spec.whatwg.org/,我不知道这是否是导致问题的原因。

As seen in this image

1 个答案:

答案 0 :(得分:0)

之所以只显示最后一个数据,是因为您要在循环中一次又一次地替换$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变量。

第二,您能确切指定它在相应元素中不出现的方式吗?就像,它在哪里结束?