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

    Metodo Construct e Quey Mysql

    Ciao a tutti....ho un problema a cui non riesco a venire a capo, ho letto le soluzione proposte a problemi simili sul forum...ma non ho risolto una cippa!!

    Ho un form con metodo post tramite il quale invio delle variabili al metodo costruttore in php..per inserire i dati in una tabella di Mysql, ho letto e provato le varie soluzioni che ho trovato qui sul forum ma nessuna funziona...
    QUalcuno riesci a darmi qualche spiegazione?

    Qui è dove invio le variabili al metodo costruttore
    Codice PHP:
    $a=$_POST['tabella']; 
    $b=$_POST['regione']; 
    $c=$_POST['nome'];
    $d=$_POST['cognome']; 
    $e=$_POST['telefono']; 
    $f=$_POST['email']; 
    $g=$_POST['descrizione']; 
    $h=$_POST['pic_1']; 
    $i=$_POST['pic_2']; 
    $l=$_POST['pic_3']; 
    $m=$_POST['pic_4'];
     
    $n=4
    $registrazione=new registrati(); 
    $registrazione->construct($a,$b,$c,$d,$e,$f,$g,$h,$i,$l,$m ); 
    questo è il metodo costruttore

    Codice PHP:
    class registrati{
         
          
          public function 
    construct($tabella,$regione,$nome,$cognome,$telefono,$email,$descrizione,$immagine_1,$immagine_2,$immagine_3,$immagine_4 ){
             
    // qui richiamo la classe Mysql per connetterni al db
              
    $connessione= new mysql();
              
    $connessione->connessione();
                    
    //Questa è la query che mi crea problemi
              
    $query="INSERT INTO `$tabella`
    (`id`, `regione`, `nome`, `cognome`, `telefono`, `mail`, `descrizione`, `immagine_1`, `immagine_2`, `immagine_3`, `immagine_4`)  
              VALUES          ('','"
    .$regione."','".$nome."','".$cognome."','".$telefono."','".$email."','".$descrizione."','".$immagine_1."','".$immagine_2."','".$immagine_3."','".$immagine_4."')";    
              
    mysql_query($query) or die ("Query errata");
              
                      
              
              
              } 
    QUello che non capisco è....se le variabili non vengono istanziate la query funziona perfettamente, appena invio le variabili dal Form la query non funziona...



    Qualcuna sa dirmi dove sbaglio??

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Il metodo costruttore (che dovresti chiamare __construct() ) non è un metodo che va chiamato a parte, viene attivato appena fai
    new registrati();
    quindi i parametri li devi passare a registrati(), così

    $registrazione = new registrati($a,$b,$c,$d,$e,$f,$g,$h,$i,$l,$m);

    leggi qui
    http://www.html.it/pag/18345/istanzi...l-costruttore/

  3. #3
    Grazie della risposta Alhazred.

    Inizialmente ho fatto esattamente così....ma non va... :P

    Quello che non capisco è che un altro metodo simile (il costruttore prende solo una variabile)
    funziona perfettamente.....questo invece mi sta facendo uscire matto!

  4. #4
    Piccola precisazione....
    Le variabili in post passano correttamente....l'errore nasce dalla query e credo dal passaggio di variabili nella stessa....

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Invece di
    mysql_query($query) or die ("Query errata");

    scrivi

    echo $query;exit;

    cosa appare a video? la query è corretta o ci mancano dei pezzi?

  6. #6
    ....non capisco....invece dei valori passati con post mi restituisce le variabili a cui sono assegnati....
    Codice PHP:
    VALUES (,$b,$c,$d,$e,$f,$g,$h,$i,$l,$m
    se provo a stamparli con echo senza passare per la query vengono stampati correttamente....

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Hai letto il link che ti ho indicato?
    Hai capito come devi scrivere correttamente la classe registrati e come chiamarla?

    Codice PHP:
    $a=$_POST['tabella']; 
    $b=$_POST['regione']; 
    $c=$_POST['nome'];
    $d=$_POST['cognome']; 
    $e=$_POST['telefono']; 
    $f=$_POST['email']; 
    $g=$_POST['descrizione']; 
    $h=$_POST['pic_1']; 
    $i=$_POST['pic_2']; 
    $l=$_POST['pic_3']; 
    $m=$_POST['pic_4'];

    $n=4//a che serve?

    $registrazione = new registrati($a,$b,$c,$d,$e,$f,$g,$h,$i,$l,$m); 
    Codice PHP:
    class registrati
    {
        public function 
    __construct($tabella,$regione,$nome,$cognome,$telefono,$email,$descrizione,$immagine_1,$immagine_2,$immagine_3,$immagine_4 )
        {
            
    // qui richiamo la classe Mysql per connetterni al db
            
    $connessione= new mysql();
            
    $connessione->connessione();
            
    //Questa è la query che mi crea problemi
            
    $query "INSERT INTO `$tabella
                            (`id`, `regione`, `nome`, `cognome`, `telefono`, `mail`, `descrizione`, `immagine_1`, `immagine_2`, `immagine_3`, `immagine_4`)  
                        VALUES
                            ('','"
    .$regione."','".$nome."','".$cognome."','".$telefono."','".$email."','".$descrizione."','".$immagine_1."','".$immagine_2."','".$immagine_3."','".$immagine_4."')";
            
            
    mysql_query($query) or die ("Query errata"); 
        }

    Ad ogni modo nella query scrivi
    VALUES ('',

    a che serve quel "niente" messo in corrispondenza del campo id?
    Se non ci devi mettere niente perché è un campo auto_increment basta che non lo specifichi nella query, anzi non lo devi proprio specificare, altrimenti ci mette il valore che gli passi (niente nel tuo caso).
    togli dalla query
    `id`,
    e
    '',

  8. #8
    Si l'ho letto l'articolo l'ho modificata così la classe

    Codice PHP:
    class registrati{
             public 
    $tabella="tabella";
            public 
    $regione="regione";
            public 
    $nome="nome";
            public 
    $cognome="cognome";
            public 
    $telefono="telefono";
            public 
    $email="email";
            public 
    $descrizione="descrizione";
            public 
    $immagine_1="immagine_1";
            public 
    $immagine_2="immagine_2";
            public 
    $immagine_3="immagine_3";
            public 
    $immagine_4="immagine_4";
          
          public function 
    __construct($tabella,$regione,$nome,$cognome,$telefono,$email,$descrizione,$immagine_1,$immagine_2,$immagine_3,$immagine_4 ){
              
    $connessione= new mysql();
              
    $connessione->connessione();
              
    $this->tabella=$tabella;
              
    $this->regione=$regione;
              
    $this->nome=$nome;
              
    $this->cognome=$cognome;
              
    $this->telefono=$telefono;
              
    $this->email=$email;
              
    $this->descrizione=$descrizione;
              
    $this->immagine_1=$immagine_1;
              
    $this->immagine_2=$immagine_2;
              
    $this->immagine_3=$immagine_3;
              
    $this->immagine_4=$immagine_4;

              
    $query="INSERT INTO ".$tabella."(id,regione,nome,cognome,telefono,mail,descrizione,immagine_1,immagine_2,immagine_3,immagine_4)  
              VALUES
              (,'"
    .$regione."','".$nome."','".$cognome."','".$telefono."','".$email."','".$descrizione."','".$immagine_1."','".$immagine_2."','".$immagine_3."','".$immagine_4."')";    
              
    mysql_query($query) or die ("Query errata"); 
    anche con la modifica che mi hai detto per l'id comunque non va

  9. #9
    Ok adesso va!!!!

    Grazie mille del supporto e della pazienza Alhazred!!!

    Ma se mi ri-leggo il necronomicon la prox volta dici che potrebbe aiutare?? ehehehe

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.