我正尝试使用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/,我不知道这是否是导致问题的原因。
答案 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
变量。
第二,您能确切指定它在相应元素中不出现的方式吗?就像,它在哪里结束?