在列中反转序列的问题

问题描述 投票:0回答:0

我正在做一个项目,其中 我想通过从 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
html jquery arrays json datatables
© www.soinside.com 2019 - 2024. All rights reserved.