[PHP] Estendere Connessione a una Classe

Discussione in 'PHP' iniziata da mau90, 4 Agosto 2019.

  1. mau90

    mau90 Nuovo Utente

    Registrato:
    2 Agosto 2019
    Messaggi:
    18
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Salve, anche oggi ho un problema con PHP...

    Ho realizzato una CLASSE all'interno della quale viene effettuata una connessione PDO al database...
    Ho "richiamato" (mi scuso se non uso la terminologia corretta) la connessione nell'index.php (pagina nella quale richiamo e che mi gestisce classi, funzioni ecc);

    l'ho "richiamata" utilizando:

    PHP:
    session_start();

    require_once 
    'Connection/DBConnection.php';

    $object = new DBConnection(); //classe
    $conn $object->connettiti();
    //funzione all'interno della classe

    Da quel che so, in teoria, tutto ciò che ho nell'index.php (file che gestisce tutto, connessione compresa), dovrebbe passare in automatico al resto dei file/pagine collegate all'index... e in parte è così... ma ho una seconda classe, all'interno della quale ho delle funzioni, dove la connessione non arriva... come potrei risolvere?

    DBConnection.php
    PHP:
    class DBConnection
    {

        private 
    $dbhost;
        private 
    $dbuser;
        private 
    $dbpass;
        private 
    $dbname;

        private 
    $conn;

        public function 
    __construct()
        {

        }

        function 
    connettiti()
        {
            
    $this->dbhost "localhost";
            
    $this->dbuser "root";
            
    $this->dbpass "root";
            
    $this->dbname "test";



            try {
                
    $connect = new \PDO("mysql:host=".$this->dbhost."; dbname=".$this->dbname$this->dbuser$this->dbpass);
                
    $connect->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

                
    $this->conn $connect;
                return 
    $this->conn;
            }
            catch(
    PDOException $e) {
                echo 
    'Errore: ' $e->getMessage();

            }

        }

    }
    index.php (ovviamente il codice è più esteso, ne inserisco solo una parte)
    PHP:
    session_start();

    require_once 
    'Controller/Edit.php';
    require_once 
    'Connection/DBConnection.php';

    $object = new DBConnection();
    $conn $object->connettiti();
    Edit.php (classe nella quale non arriva la connessione alle varie funzioni)
    PHP:
    class Edit
    {
        private 
    $conn;

        public function 
    __construct() {

            
    $this->conn = new DBConnection();

        }

        function 
    delete($id){

            
    //elimina elemento dalla tabella
            
    $sql "DELETE FROM prodotti WHERE id=:id";

            
    $query $this->conn->prepare($sql);
            
    $query->execute(array(':id' => $id));
            if(
    $query->fetch_row){
                
    header('Location: ../?type=h');
            }else{
                echo 
    "Errore";
                
    var_dump($query);
                die();
            }


        }

        function 
    edit($id){



            
    $nome_prodotto=$_POST['nome_prodotto'];

            
    //aggiorna dati della tabella
            
    $sql "UPDATE prodotti SET nome_prodotto=:nome_prodotto WHERE id=:id";
            
    $query $this->conn->prepare($sql);

            
    $query->bindparam(':id'$id);
            
    $query->bindparam(':nome_prodotto'$nome_prodotto);
            
    $query->execute();

            
    //in alternativa
            //$query->execute(array(':id' => $id, ':nome_prodotto' => $nome_prodotto));

            
    header("Location: ./?type=h");

            
    //prende l'id
            
    $id = isset($_GET['id']);

            
    //seleziona l'elemento associato all'id
            
    $sql "SELECT * FROM prodotti WHERE id=:id";
            
    $query $this->conn->prepare($sql);
            
    $query->execute(array(':id' => $id));

            while(
    $row $query->fetch(PDO::FETCH_ASSOC))
            {
                
    $nome_prodotto $row['nome_prodotto'];

            }
        }
    }
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    1.006
    Mi Piace Ricevuti:
    57
    Punteggio:
    48
    Sesso:
    Maschio
    Occupazione:
    Dev Full Stack
    Località:
    IT/SW
    Crei una classe statica che restituisce l'istanza corrente del Framework che hai creato!
     
    A mau90 piace questo elemento.
Sto caricando...

Condividi questa Pagina