• User Attivo

    [consiglio] Inserimento dati su DB

    Ciao a tutti,
    ho realizzato un piccolo script per inserire diversi dati sul db, ma riscontro dei problemi.
    Intanto vi posto il mio script, trascurando il CREATE TABLE in cui creo le tabelle di cui necessito:

    Form di inserimento dati:

    <form method="post" action="registra.php">
            
            Nome: <input type="text" name="strnome">
            <br />
            Cognome: <input type="text" name="strcognome">
            <br />
            Mail: <input type="text" name="strmail">
            <br />
            Telefono: <input type="text" name="strtelefono">
            <br />
            Indirizzo: <input type="text" name="strindirizzo">
            <br />
            Regione: <input type="text" name="strregione">
            <br />
            Città: <input type="text" name="strcitta">
            <br />
            Località: <input type="text" name="strlocalita">
            <br />
           
            <input type="submit" value="Registra Cliente">
        </form>
    

    La pagina registra.php

    <?php
    //Connessione al Database
    mysql_connect("db_host","db_user","db_pwd") or die ("impossibile connettersi");
    //selezione del DB
    mysql_select_db("db_nam") or dir ("impossibile selezionare il db");
    //includo la class cliente
    require_once("cliente.class.php");
    //istanzio un nuovo oggetto "cliente"
    $cliente = new cliente;
    ?>
    <html>
        <head>
            <title>Registrazione Cliente</title>
        </head>
        <body>
        <?php
        //setto i dati nell'oggetto
        $cliente->imposta($_POST);
        //prova ad aggiungere il nuovo cliente
        $cliente->aggiungi();
        ?>
    

    ho creato il cliente.class.php per eseguire i controlli:

    class cliente{
        //Attributi
        var $arrData = array();
        var $strSQL = "";
        var $bool = true; 
        //Metodi
        /**
         * Metodo: imposta - questo metodo serve ad impostare l'array arrData recuperato tramite $postData
        * input
        * @param array $postData - Array contenente i vari valori da associare all'array arrData
        */
        function imposta($postData){
                $this->arrData = $postData;
        }
        /**
        * Metodo: aggiungi - con questo metodo inseriamo i dati dell'array nel Database
        */
        function aggiungi(){
            //controllo che l'array non sia vuoto
            if(!empty($this->arrData)){
                //controllo che tutti i campi siano pieni
                foreach($this->arrData as $value){
                    if(strlen($value) == 0){
                        $this->bool = false;
                        break; //Evito di visualizzare piu' volte lo stesso messaggio
                    }
                }
            }else{
                $this->bool = false;
            }
            
            if($this->bool){
                //costruzione automatica della query SQL
                $this->strSQL = "INSERT INTO cliente ("
                            . implode(", ", array_keys($this->arrData))
                            . ") VALUES('"
                            . implode("', '", $this->arrData)
                            . "')";
                //Esecuzione query...
                if(mysql_query($this->strSQL)){
                    echo  "Cliente aggiunto con successo";
                }else{
                    echo "Problemi durante l'inserimento del cliente";
                }
            }else{
                echo "Attenzione: specificare tutti i campi";
            }
        }
    }
    ?>  
    

    Purtoppo però l'inserimento non va buon fine, deve esserci un problema quando va a fare la query: if(mysql_query($this->strSQL))

    Qualcuno può aiutarmi?


  • Moderatore

    fatti stampare l'errore di mysql con mysql_error();


  • User Attivo

    Ho risolto!
    Grazie lo stesso.