Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    problema classe db con metodo di connessione

    Salve da pochissimo sto tentando di affacciarmi alla programmazione OOP. Sto cercando di creare una classe (a titolo puramente sperimentale) per la gestione database.Ma ho problemi a creare la parte della connessione, trasformando il codice procedurale in OOP.
    cioè questa:
    Codice PHP:
    $con=mysqli_connect("localhost","root","","prove");
    // Check connection
    if (mysqli_connect_errno()) {
    echo 
    "Impossibile connettersi al database: " mysqli_connect_error();



    se imposto così la funzione (con i dati di connessione dentro)
    Codice PHP:
    function elimina_record ($tabella,$campo,$id) {

    $con=mysqli_connect("localhost","root","","prove");
    // Check connection
    if (mysqli_connect_errno()) {
    echo 
    "Impossibile connettersi al database: " mysqli_connect_error();
    }


    mysqli_query($con,"DELETE FROM " .$tabella" WHERE " .$campo"='".$id."'");
    echo 
    "eliminato";

    ed eseguo il metodo

    Codice PHP:
    $ogg = new DB();
    $ogg->elimina_record('dati','id','22'); 
    il record viene effettivamente eliminato, ho provato a creare una funzione "connetti()", modificando la classe in questa maniera, ma ce sicuramente qualcosa di concettualmente sbagliato:

    Codice PHP:

    class DB {
                
    function 
    connetti() {

    $con=mysqli_connect("localhost","root","","prove");

    if (
    mysqli_connect_errno()) {
    echo 
    "Impossibile connettersi al database: " mysqli_connect_error();
    }
    }
                

    function 
    elimina_record ($tabella,$campo,$id) {

    $this->connetti();

    mysqli_query($con,"DELETE FROM " .$tabella" WHERE " .$campo"='".$id."'");
    echo 
    "eliminato";
    }
            

    grazie

    ciao

  2. #2
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    Non hai detto che problema hai. Ti da errore? (se si quale?) Non fa la query?
    Io ho fatto una cosa praticamente identica, cioè una classe con all'interno un metodo connessione che viene richiamato all'interno di altri metodi, però mi funziona perfettamente.

  3. #3
    Quote Originariamente inviata da Disema Visualizza il messaggio
    Non hai detto che problema hai. Ti da errore? (se si quale?) Non fa la query?
    Io ho fatto una cosa praticamente identica, cioè una classe con all'interno un metodo connessione che viene richiamato all'interno di altri metodi, però mi funziona perfettamente.
    ciao e grazie per la risposta.
    Si mi da errore e precisamente questo:
    codice:
    Notice:  Undefined variable: con in C:\...\classi\db.class.php on line 24
    
    Warning:  mysqli_query() expects parameter 1 to be mysqli, null given in C:\...\classi\db.class.php on line 24
    eliminato

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi. Non testato.

    Codice PHP:

    class DB {
    private 
    $con;

    function 
    __construct() {
      
    $this->connetti();
    }

    function 
    connetti() {
    $this->con=mysqli_connect("localhost","root","","prove");
     if (
    mysqli_connect_errno()) {
      echo 
    "Impossibile connettersi al database: " mysqli_connect_error();
     }
    }            

    function 
    elimina_record ($tabella,$campo,$id) {
    // $this->connetti();
    mysqli_query($this->con,"DELETE FROM " .$tabella" WHERE " .$campo"='".$id."'");
    echo 
    "eliminato";
    }       

    Ultima modifica di badaze; 21-10-2014 a 18:19
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    Ah ecco ho capito avevo anche io questo problema e ho risolto così:
    al posto di
    Codice PHP:
    $con=mysqli_connect("localhost","root","","prove"); 
    ho messo
    Codice PHP:
    return mysqli_connect("localhost","root","","prove"); 
    e poi quand orichiamo il metodo all'interno ho messo:
    Codice PHP:
    $con $this->connetti(); 

  6. #6
    Si! funziona, grazie.
    potresti darmi qualche delucidazione in merito alle modifiche?

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da cablos Visualizza il messaggio
    Si! funziona, grazie.
    potresti darmi qualche delucidazione in merito alle modifiche?
    Da quale post ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Da quale post ?
    il tuo , ho visto che hai utilizzato __construct del quale non ho capito bene l'utilizzo..

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    __construct è un metodo che viene richiamato in automatico quando fai $ogg = new DB();

    Ovviamente se usi un'altra class quella puo' avere il suo proprio __construct.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    PDO.
    Questa volta, più che un voto.. è favoreggiamento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.