Я использую технику, проделанную в этом вопросе. Как поместить данные из таблицы базы данных в HTML-таблицу, используя ajax и php .
Цель моей задачи: обновить таблицу из базы данных postgresql после определенного промежутка времени, скажем, через 1 минуту. Я хочу использовать Ajax, потому что я не хочу, чтобы эта страница была обновлена. Это должно быть сделано автоматически. Прежде чем применять ajax, мой код находится в:
файл estat hardware.php
<!DOCTYPE html>
<html>
<head>
<style> <?php include './../css/estat_hardware.css'; ?> </style>
</head>
<?php
$host = "10.80.145.98";
$port ="5432";
$user = "postgres";
$pass = "AIRFI2014";
$db = "hospital";
?>
<body>
<div class="maindiv">
<div id="tagstable">
<h3>Estat Tags</h3>
<?php
$con = pg_connect("host=$host dbname=$db user=$user password=$pass") or die ("Could not connect to server\n");
$query = "SELECT * FROM beacon";
$result = pg_query($con, $query) or die("Cannot execute query: $query\n");
$i = 0;
echo '<html><body><table>';
echo '<th>' . "TAG" . '</td>';
echo '<th>' . "BATERIA" . '</td>';
echo '<th>' . " VIST ÚLTIMA COP " . '</td>';
echo '<th>' . "ESTAT" . '</td>';
$i = 0;
while ($row = pg_fetch_array($result)){
$estat="TODO";
echo "<tr>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[3]."</td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$estat."</td>";
echo "</tr>";
}
pg_free_result($result);
echo '</table></body></html>';
pg_close($con);
?>
</div>
</div>
</body>
</html>
Я хочу обновить ту же таблицу, используя AJAX. Итак, я изучил ajax и кодировал механизм, в котором будет вызываться функция сервера, сервер будет получать данные из базы данных и перезапускать их с помощью json. Файл сервера: estat_hardware_server.php
<?php
$host = "10.80.145.98";
$port ="5432";
$user = "postgres";
$pass = "AIRFI2014";
$db = "hospital";
$con = pg_connect("host=$host dbname=$db user=$user password=$pass") or die ("Could not connect to server\n");
$query = "SELECT mac,ts,battery FROM beacon";
$result = pg_query($con, $query) or die("Cannot execute query: $query\n");
if(pg_num_rows($result)){
$data=array();
while($row=pg_fetch_array($result)){
$data[] = array(
'mac'=>$row['mac'],
'ts' =>$row['ts'],
'battery'=>$row['battery']
);
}
echo json_encode($data);
pg_free_result($result);
pg_close($con);
}
?>
На стороне клиента у меня есть следующий код, который должен быть обновлен с AJAX.
<!DOCTYPE html>
<html>
<head>
<style> <?php include './../css/estat_hardware.css'; ?> </style>
</head>
<body>
<div class="maindiv">
<div id="tagstable">
<h3>Estat Tags</h3>
<?php
echo '<html><body><table>';
echo '<th>' . "TAG" . '</td>';
echo '<th>' . "BATERIA" . '</td>';
echo '<th>' . " VIST ÚLTIMA COP " . '</td>';
echo '<th>' . "ESTAT" . '</td>';
echo '</table></body></html>';
?>
</div>
</div>
</body>
</html>
Мой код ajax, который я тестировал на стороне клиента для правильного получения данных от json:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
for (i = 0; i < myObj.length; i++) {
// I need to update the table here, after time interval 1 minute.
}
}
};
xmlhttp.open("GET", "pages/estat_hardware_server.php", true);
xmlhttp.send();