Jump to content
Fórum Script Brasil
  • 0

A variável global


Frank K Hosaka

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...