Ir para conteúdo
Fórum Script Brasil
  • 0

Como criar um relógio artificial no PHP? (Resolvido)


Frank K Hosaka

Pergunta

O Cleimar criou a tabela movimentações assim: id, idVisitante, nomeVisitante, placa,dataEntrada,horaEntrada,dataSaída,horaSaída,Acompanhantes.

Eu fiz uma adaptação, usando o principio da atomicidade, e a tabela ficou assim: id, idPessoa, direcao, dataHora. Cada tabela tem que representar uma única tarefa, no caso de movimentação, alguém entra ou sai num determinado momento.

O Cleimar fez um Controle de Entrada e Controle de Saída, eu já ajuntei tudo, e eu fiz o Movimento com dois botões, mais ou menos assim: 
<form><select /><input type="submit" name="entrada" value="registrar entrada" /><input type="submit" name="saida" value="registrar saída" /></form>

Isso vai funcionar? O Copilot disse que sim, o HTML vai informar ao PHP qual o <input type="submit" /> que o usuário apertou.

Eu já cadastrei o "João", ele é o único morador do condomínio. Não tem ninguém na portaria, logo o único que vai registrar a entrada e saída é ele mesmo.

Mas para fazer o teste, eu precisava de um relógio artificial. Agora é 29/09/25 05:28, e para mudar isso eu preciso esperar 60 segundos. Eu precisava de um relógio mais rápido.

---- com a ajuda do Copilot e vários testes consegui isso:
 

<?php
session_start();
if (!isset($_SESSION['relogio'])) {
    $_SESSION['relogio'] = date('Y-m-d\TH:i:s'); 
}
if (isset($_POST['entrada'])) {
    $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso']));
    $_SESSION['registros'][] = "🟢 Entrada " . date('d/m/y H:i',strtotime($_POST['relogio_iso']));
    $_SESSION['relogio'] = $relogioFormatado;
}
if (isset($_POST['saida'])) {
    $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso']));
    $_SESSION['registros'][] = "🔴 Saída " . date('d/m/y H:i',strtotime($_POST['relogio_iso']));
    $_SESSION['relogio'] = $relogioFormatado;
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Registro de Movimentações</title>
    <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 flex items-center justify-center min-h-screen">
    <form method="post" class="bg-white p-8 rounded-lg shadow-md space-y-4 w-full max-w-md">
        <h2 class="text-2xl font-bold text-gray-800 text-center">🕒 Registro de Movimentações</h2>

        <input type="submit" name="entrada" value="Registrar Entrada"
               class="w-full bg-green-500 hover:bg-green-600 text-white font-semibold py-2 px-4 rounded transition">
        
        <input type="submit" name="saida" value="Registrar Saída"
               class="w-full bg-red-500 hover:bg-red-600 text-white font-semibold py-2 px-4 rounded transition">
        
        <div class="flex flex-col">
            <label for="relogio" class="text-gray-700 font-medium mb-1">Horário Atual</label>
            <input name="relogio" id="relogio" readonly
                   class="bg-gray-200 text-gray-800 font-mono px-4 py-2 rounded border border-gray-300 cursor-pointer hover:bg-gray-300 transition">
            <small class="text-gray-500 mt-1">Clique no campo para avançar 2 horas</small>
            <input type="hidden" name="relogio_iso" id="relogio_iso">
        </div>

        <?php if (!empty($_SESSION['registros'])): ?>
            <div class="mt-4 bg-gray-50 p-4 rounded border border-gray-200">
                <h3 class="text-lg font-semibold text-gray-700 mb-2">📋 Registros:</h3>
                <ul class="list-disc list-inside text-gray-600 space-y-1">
                    <?php foreach ($_SESSION['registros'] as $registro): ?>
                        <li><?= htmlspecialchars($registro) ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>
        <?php endif; ?>
    </form>

    <script>
        let relogioInput = document.getElementById('relogio');
        let dataAtual = new Date("<?= $_SESSION['relogio'] ?>");

        function atualizarRelogio() {
            relogioInput.value = dataAtual.toLocaleString('pt-BR');
            document.getElementById('relogio_iso').value = dataAtual.toISOString().slice(0, 19); 
        }

        setInterval(() => {
            dataAtual.setMinutes(dataAtual.getMinutes() + 30);
            atualizarRelogio();
        }, 1000);

        relogioInput.addEventListener('click', () => {
            dataAtual.setHours(dataAtual.getHours() + 2);
            atualizarRelogio();
        });

        atualizarRelogio();
    </script>
</body>
</html>

 

Captura de tela 2025-09-29 073232.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
3 horas atrás, Frank K Hosaka disse:

O Cleimar criou a tabela movimentações assim: id, idVisitante, nomeVisitante, placa,dataEntrada,horaEntrada,dataSaída,horaSaída,Acompanhantes.

Eu fiz uma adaptação, usando o principio da atomicidade, e a tabela ficou assim: id, idPessoa, direcao, dataHora. Cada tabela tem que representar uma única tarefa, no caso de movimentação, alguém entra ou sai num determinado momento.

O Cleimar fez um Controle de Entrada e Controle de Saída, eu já ajuntei tudo, e eu fiz o Movimento com dois botões, mais ou menos assim: 
<form><select /><input type="submit" name="entrada" value="registrar entrada" /><input type="submit" name="saida" value="registrar saída" /></form>

Isso vai funcionar? O Copilot disse que sim, o HTML vai informar ao PHP qual o <input type="submit" /> que o usuário apertou.

Eu já cadastrei o "João", ele é o único morador do condomínio. Não tem ninguém na portaria, logo o único que vai registrar a entrada e saída é ele mesmo.

Mas para fazer o teste, eu precisava de um relógio artificial. Agora é 29/09/25 05:28, e para mudar isso eu preciso esperar 60 segundos. Eu precisava de um relógio mais rápido.

---- com a ajuda do Copilot e vários testes consegui isso:
 

<?php
session_start();
if (!isset($_SESSION['relogio'])) {
    $_SESSION['relogio'] = date('Y-m-d\TH:i:s'); 
}
if (isset($_POST['entrada'])) {
    $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso']));
    $_SESSION['registros'][] = "🟢 Entrada " . date('d/m/y H:i',strtotime($_POST['relogio_iso']));
    $_SESSION['relogio'] = $relogioFormatado;
}
if (isset($_POST['saida'])) {
    $relogioFormatado = date('Y-m-d\TH:i:s', strtotime($_POST['relogio_iso']));
    $_SESSION['registros'][] = "🔴 Saída " . date('d/m/y H:i',strtotime($_POST['relogio_iso']));
    $_SESSION['relogio'] = $relogioFormatado;
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Registro de Movimentações</title>
    <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 flex items-center justify-center min-h-screen">
    <form method="post" class="bg-white p-8 rounded-lg shadow-md space-y-4 w-full max-w-md">
        <h2 class="text-2xl font-bold text-gray-800 text-center">🕒 Registro de Movimentações</h2>

        <input type="submit" name="entrada" value="Registrar Entrada"
               class="w-full bg-green-500 hover:bg-green-600 text-white font-semibold py-2 px-4 rounded transition">
        
        <input type="submit" name="saida" value="Registrar Saída"
               class="w-full bg-red-500 hover:bg-red-600 text-white font-semibold py-2 px-4 rounded transition">
        
        <div class="flex flex-col">
            <label for="relogio" class="text-gray-700 font-medium mb-1">Horário Atual</label>
            <input name="relogio" id="relogio" readonly
                   class="bg-gray-200 text-gray-800 font-mono px-4 py-2 rounded border border-gray-300 cursor-pointer hover:bg-gray-300 transition">
            <small class="text-gray-500 mt-1">Clique no campo para avançar 2 horas</small>
            <input type="hidden" name="relogio_iso" id="relogio_iso">
        </div>

        <?php if (!empty($_SESSION['registros'])): ?>
            <div class="mt-4 bg-gray-50 p-4 rounded border border-gray-200">
                <h3 class="text-lg font-semibold text-gray-700 mb-2">📋 Registros:</h3>
                <ul class="list-disc list-inside text-gray-600 space-y-1">
                    <?php foreach ($_SESSION['registros'] as $registro): ?>
                        <li><?= htmlspecialchars($registro) ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>
        <?php endif; ?>
    </form>

    <script>
        let relogioInput = document.getElementById('relogio');
        let dataAtual = new Date("<?= $_SESSION['relogio'] ?>");

        function atualizarRelogio() {
            relogioInput.value = dataAtual.toLocaleString('pt-BR');
            document.getElementById('relogio_iso').value = dataAtual.toISOString().slice(0, 19); 
        }

        setInterval(() => {
            dataAtual.setMinutes(dataAtual.getMinutes() + 30);
            atualizarRelogio();
        }, 1000);

        relogioInput.addEventListener('click', () => {
            dataAtual.setHours(dataAtual.getHours() + 2);
            atualizarRelogio();
        });

        atualizarRelogio();
    </script>
</body>
</html>

 

Captura de tela 2025-09-29 073232.png

top.. parabens.. visto que hoje em dia o trem ta evoluindo pra reconhecimento facial pra resgistrar as entradas e saida ne.. mas o objetivo e estudar e gerar alternativas.. 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,5k
    • Posts
      652,5k
×
×
  • Criar Novo...