我正在做一个项目,其中 我想通过从 RFID 传感器接收数据的本地主机数据库在 JSON/数据表中注册输入和输出数据,以使状态列正常工作 我创建了一系列进入和退出,该序列正常工作,但它注册在表的最后一个数据/行中,新数据添加在顶部。
Entrou=入口 Saiu=退出
<!DOCTYPE html>
<html>
<head>
<title>Registos</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="my_script.js"></script>
<script src="https://ajax.googleapis.com/ajax/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
<meta http-equiv="refresh" content="20">
</head>
<body>
<h1>Registos</h1>
<br><br>
<table id="tabela-rfid" class="display">
<thead>
<tr>
<style>
#tabela-rfid {
display: none;
}
</style>
<th>ID do Cartão</th>
<th>Nome</th>
<th>Número</th>
<th>Data</th>
<th>Hora</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
// Ligação com a base de dados
$servername = "localhost"; // Nome do servidor
$username = "root"; // Nome de utilizador
$password = "Rubeneves."; // password da base de dados
$dbname = "rfidata"; // Nome da base de dados
// Estabelece a ligação com a base de dados
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Consulta a base de dados
$sql = "SELECT dadosfixos.id_cartao, dadosfixos.nome, dadosfixos.numero, dadosvariaveis.data, dadosvariaveis.hora, dadosvariaveis.status, dadosvariaveis.status
FROM dadosfixos LEFT JOIN dadosvariaveis ON dadosfixos.id_cartao = dadosvariaveis.id_cartao
ORDER BY dadosvariaveis.data DESC, dadosvariaveis.hora DESC";
$result = mysqli_query($conn, $sql);
if (!$result) {
die('Erro na consulta SQL: ' . mysqli_error($conn));
}
// Cria um array vazio para armazenar as linhas da tabela
$rows = array();
// Exibição dos dados na tabela
$last_card_id = "";
$is_first_record = true; // Define se é o primeiro registro de cada ID
while ($row = mysqli_fetch_assoc($result)) {
// Define a sequência de status de acordo com o ID do cartão
if ($row["id_cartao"] != $last_card_id) {
$is_first_record = true;
$status = "Entrou";
} else {
$is_first_record = false;
if ($status == "Entrou") {
$status = "Saiu";
} else {
$status = "Entrou";
}
}
// Adiciona a linha à array
$rows[] = array(
"id_cartao" => $row["id_cartao"],
"nome" => $row["nome"],
"numero" => $row["numero"],
"data" => $row["data"],
"hora" => $row["hora"],
"status" => $status
);
// Atualiza o ID do cartão anterior
$last_card_id = $row["id_cartao"];
}
// Percorre o array de linhas na ordem inversa e exibe os dados na tabela
for ($i = count($rows) - 1; $i >= 0; $i--) {
echo "<tr>";
echo "<td style='text-align: center;'>" . $rows[$i]["id_cartao"] . "</td>";
echo "<td style='text-align: center;'>" . $rows[$i]["nome"] . "</td>";
echo "<td style='text-align: center;'>" . $rows[$i]["numero"] . "</td>";
echo "<td style='text-align: center;'>" . $rows[$i]["data"] . "</td>";
echo "<td style='text-align: center;'>" . $rows[$i]["hora"] . "</td>";
echo "<td style='text-align: center;'>" . $rows[$i]["status"] . "</td>";
echo "</tr>";
}
mysqli_close($conn);
?>
</tbody>
</table>
<script>
$(document).ready(function() {
$('#tabela-rfid').DataTable({
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.24/i18n/Portuguese-Brasil.json"
}
});
});
</script>
</body>
</html>
I have tried this
ORDER BY dadosvariaveis.id_cartao ASC, dadosvariaveis.data DESC, dadosvariaveis.hora DESC, dadosvariaveis.status ASC
and other things but it makes the sequence not work