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

A variável global


Frank K Hosaka

Pergunta

Depois de cinco anos, eu decidi eliminar a tabela super variável do meu banco de dados; no lugar dele eu uso a variável de sessão que dura enquanto o navegador estiver funcionando.

Ontem, no entanto, eu perguntei para a Gemini se ela tinha um código exemplo para controlar o movimento das pessoas no condomínio, e ela me passou o código.

O código dela é bem estranho, ela mistura o motor do mysqli com o motor PDO, eu duvido que isso vá funcionar, eu ainda não testei.

Mesmo assim, o código dela é o primeiro exemplo que eu vi que alguém usa a variável global. Eu já tinha ouvido falar, mas nunca cheguei a testar. 

A minha ideia é tentar fazer uma variável global durar enquanto o navegador estiver funcionando, não sei se vou conseguir, mas o meu ponto de partida vai ser o código da Gemini:

arquivo index.php
<?php
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "diario";
$dbConnection = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if ($dbConnection->connect_error) 
{
    die("Connection failed: " . $dbConnection->connect_error);
}

function registerEntry($name, $apartment, $timeIn) 
{
    global $dbConnection;
    $sql = "INSERT INTO entries (name, apartment, time_in) VALUES (?, ?, ?)";
    $stmt = $dbConnection->prepare($sql);
    $stmt->bind_param("sss", $name, $apartment, $timeIn);
    $stmt->execute();
    if ($stmt->affected_rows > 0) 
    {
        echo "Entry registered successfully for: " . $name . " (Apartment: " . $apartment . ") - Time In: " . $timeIn . "\n";
    } else {
        echo "Error registering entry: " . $dbConnection->error . "\n";
    }
    $stmt->close();
}

function registerExit($name, $apartment, $timeOut) 
{
    global $dbConnection;
    $sql = "INSERT INTO exits (name, apartment, time_out) VALUES (?, ?, ?)";
    $stmt = $dbConnection->prepare($sql);
    $stmt->bind_param("sss", $name, $apartment, $timeOut);
    $stmt->execute();
    if ($stmt->affected_rows > 0) 
    {
        echo "Exit registered successfully for: " . $name . " (Apartment: " . $apartment . ") - Time Out: " . $timeOut . "\n";
    } else {
        echo "Error registering exit: " . $dbConnection->error . "\n";
    }
    $stmt->close();
}

$name = "John Doe";
$apartment = "101";
$timeIn = date("Y-m-d H:i:s");
registerEntry($name, $apartment, $timeIn);

sleep(3600); // 1 hour

$timeOut = date("Y-m-d H:i:s");
registerExit($name, $apartment, $timeOut);
$dbConnection->close();

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O código da Gemini funciona, só que demora uma hora para ser executado. Eu alterei o tempo de espera para um minuto com sleep(10). 

Eu gostei do código da Gemini, ela começa com a conexão mysqli e em seguida ela usa os métodos do PDO, só não sei se é possível obter um array de objetos.

Para transformar a conexão numa variável global, ela não pode ser definido numa classe mas num sim num módulo comum como acontece com o arquivo config.php onde são definidos as constantes. A seguir o mesmo código da Gemini só que usando as classes:


arquivo /Astudy/Controles/Controle.php
<?php

require 'Modelos/Conexao.php';

class Controle {
    
    public function entrada($nome, $apto, $entrou) {
        global $conexao;
        $sql = "INSERT INTO entradas (nome, apto, entrou) VALUES (?, ?, ?)";
        $stmt = $conexao->prepare($sql);
        $stmt->bind_param("sss", $nome, $apto, $entrou);
        $stmt->execute();
        if ($stmt->affected_rows > 0) {
            echo "Regitrado: $nome (Apto:  $apto) - entrou: $entrou <br>";
        } else {
            echo "Problema: $conexao->error";
        }
        $stmt->close();
    }

    
    function saida($nome, $apto, $saiu) {
        global $conexao;
        $sql = "INSERT INTO saidas (nome, apto, saiu) VALUES (?, ?, ?)";
        $stmt = $conexao->prepare($sql);
        $stmt->bind_param("sss", $nome, $apto, $saiu);
        $stmt->execute();
        if ($stmt->affected_rows > 0) {
            echo "Registrado $nome (Apto:  $apto) - saiu: $saiu <br>";
        } else {
        echo "Problema: $conexao->error";
        }
        $stmt->close();
    }



}

arquivo /Astudy/Modelos/Conexao.php
<?php
$host = "localhost";
$usuario = "root";
$senha = "";
$esquema = "diario";
$conexao = new mysqli($host, $usuario, $senha, $esquema);
if ($conexao->connect_error) {    
    die("Falha na conexao: " . $conexao->connect_error);  
} 


arquivo /Astudy/index.php
<?php
require 'Controles/controle.php';
$controle=new Controle;

$nome = "John Doe";
$apto = "101";
$entrou = date("Y-m-d H:i");
$controle->entrada ($nome, $apto, $entrou);

sleep(10); // 1 minuto

$saiu = date("Y-m-d H:i");
$controle->saida($nome, $apto, $saiu);

 

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...