[PHP] Estendere Connessione a una Classe

  • Creatore Discussione Creatore Discussione mau90
  • Data di inizio Data di inizio

mau90

Nuovo Utente
2 Ago 2019
18
1
3
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_ERRMODE, PDO::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'];

        }
    }
}
 

Discussioni simili