Visualizzazione dei risultati da 1 a 5 su 5

Discussione: OOP ereditarietà

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134

    OOP ereditarietà

    Salve a tutti, sono all'inizio della programmazione OOP di PHP5 sto facendo vari esercizi per capire un pò come funziona questo tipo di programmazione e mi sono inbattuto in un rompicapo che a me sembra difficile ma sicuramente sarà molto semplice:

    Pagina form: index.php

    codice:
    <form action='ins.php' method='post'>
    <input type='text' name='nome'>
    <input type='text' name='anni'>
    <input type='submit'>
    Pagina config con connessione al DB: config.php

    Codice PHP:
    <?php
    class config {

    public 
    $connesione;

    public function 
    con() {

         
    $host "localhost";
         
    $user "root";
         
    $pasw "";
         
    $db "datab";

        
    $this->connessione = new mysqli($host,$user,$pasw,$db);
        
            if (
    mysqli_connect_error()) {

                echo 
    "Database non è connesso";
            } else {
                
                
    $this->connessione->set_charset("utf8");
                return 
    true;    
            }

        }
    }


    ?>
    Pagina ins.php dove si controllano i dati del form e messi nel db, ma riscontro un erorre:

    Codice PHP:
    <?php

    include_once "config.php";

    class 
    inserimento extends config {

    public function 
    __construct(){


    $nome $_POST['nome'];
    $anni $_POST['anni'];
    $query "INSERT INTO utente (nome,anni) VALUES (?,?)";
    $datis "$nome,$anni";
    $this->insert($query,$nome,$anni);


    }


    public function 
    insert($query,$nome,$anni) {


    $smtp $this->connessione->prepare($query);
    $smtp->bind_param("si"$nome,$anni);
    $smtp->execute();
        
    }
    }

    $objg = new inserimento;
    $obj = new config;

    ?>
    Credo di non aver capito bene l'ereditarietà perchè io ho utilizzato questa logica:
    nel file config.php usando questa proprietà $this->connessione faccio la connessione al db.

    Nel faile ins.php visto che includo la classe config dovrei riuscire ad avere sempre la proprietà $this->connessione per effettuare query nel db senza rifare sempre la connessione in ogni file. però sbaglio sicuramente qualcosa
    Non insultatemi ahahah sono agli inizi xD

  2. #2
    Ciao, visto che sei agli inizi fai ancora in tempo a lasciar perdere quelle due classi e passare direttamente a PDO.

    http://www.php.net/manual/it/book.pdo.php

    l'uso di mysql_connect e varie è deprecato

    Per quanto riguarda il tuo problema non hai ancora ben chiaro come funzionano le classi a quanto pare devi studiare un po' di più

    Codice PHP:
    $smtp $this->connessione->prepare($query); 
    questa riga è sbagliata, connessione non è una proprietà della classe inserimento e prepare non è un metodo che hai codificato.. Per di più stai dicendo al php che $this->connessione dovrebbe avere un metodo "prepare" che non esiste...
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    $connessione (occhio, che in config c'è solo una 's' ) viene si ereditata dalla classe insermento, ma non ha valore visto che viene istanziata solamente nel metodo config::con().

    Quindi, prima di poter fare qualunque query devi prima richiamare tale metodo, altrimenti connessione non è un link valido

    Codice PHP:
    public function __construct(){


    $nome $_POST['nome'];
    $anni $_POST['anni'];
    $query "INSERT INTO utente (nome,anni) VALUES (?,?)";
    $datis "$nome,$anni";
    $this->con();
    $this->insert($query,$nome,$anni);




  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    Grazie mille per le risposte, veramente gentili

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    Originariamente inviato da Al_katraz984
    Ciao, visto che sei agli inizi fai ancora in tempo a lasciar perdere quelle due classi e passare direttamente a PDO.

    http://www.php.net/manual/it/book.pdo.php


    l'uso di mysql_connect e varie è deprecato
    Wow, è deprecato anche MySqli? mi sono guardato PDO è una figata grazie


    Per quanto riguarda il tuo problema non hai ancora ben chiaro come funzionano le classi a quanto pare devi studiare un po' di più

    Codice PHP:
    $smtp $this->connessione->prepare($query); 
    questa riga è sbagliata, connessione non è una proprietà della classe inserimento e prepare non è un metodo che hai codificato.. Per di più stai dicendo al php che $this->connessione dovrebbe avere un metodo "prepare" che non esiste...
    Ok, però non mi torna il fatto che la stringa
    Codice PHP:
    $smtp $this->connessione->prepare($query); 
    non è del tutto sbagliata, perchè se inizializzo la funzione come ha detto boots "$this->con();" La query mi funziona tranquillamente.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.