Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di fbracal
    Registrato dal
    Jun 2006
    Messaggi
    1,630

    Aggiunta dati ad una tabella

    Salve a tutti,
    pian pianino sto studiando PHP e sono arrivato all'integrazione con i database (nello specifico MySQL).
    Nel libro sul quale sto studiando (Teach Yourself PHP 4 in 24 Hours - SAMS Publishing) c'è riportato lo script seguente, che però non funziona o meglio non vengono aggiunti record al database:
    <html>
    <head>
    <title>Listato 12-3: Aggiunta dell input utente ad un database</title>
    </head>
    <body>
    <?php
    if (isset($dominio) && isset($sesso) && isset($email))
    {
    //Qui verifichiamo l'input dell'utente!
    $erroredb = "";
    $ret = aggiungi_al_database($dominio, $sesso, $email, $erroredb);
    if (!ret)
    print "Errore: $erroredb
    ";
    else
    print "Grazie 1000!";
    }
    else {
    scrivi_form();
    }
    function aggiungi_al_database($dominio, $sesso, $email, $erroredb)
    {
    $utente = "fabiano";
    $pass = "xxxxxxx";
    $db = "test";
    $link = mysql_pconnect( "localhost", $utente, $pass );
    if ( ! $link )
    {
    $erroredb = "Non posso connettermi a MySQL";
    return false;
    }
    if (! mysql_select_db( $db, $link ))
    {
    $erroredb = mysql_error();
    return false;
    }
    $query = "INSERT INTO domini (dominio, sesso, email) VALUES ('$dominio', '$sesso', '$email')";
    if ( ! mysql_query ($query, $link))
    {
    $erroredb = mysqlerror();
    return false;
    }
    return true;
    mysql_close($link);
    }
    function scrivi_form()
    {
    global $PHP_SELF;
    global $dominio;
    global $sesso;
    global $email;
    print "<form action=\"$PHP_SELF\" method=\"POST\"\n";
    print "<input type = \"text\" name=\"dominio\">";
    print "Scegli il dominio che vuoi

    \n";
    print "<input type = \"text\" name=\"email\">";
    print "Inserisci il tuo indirizzo email

    \n";
    print "<select name=\"sesso\">\n";
    print "\t<option value=\"F\">Femminile\n";
    print "\t<option value=\"M\">Maschile\n";
    print "</select>\n";
    print "<input type=\"submit\" value=\"Invia\">\n </form>\n";
    }
    ?>
    </body>
    </html>
    Naturalmente dal lato MySQL è tutto OK, ho provato ad inserire a manina i dati e la tabella viene aggiornata.
    Io non capisco dove sia l'errore, qualche anima pia mi aiuta a districare questa matassa.
    Grazie in anticipo a chi risponderà.
    Fabiano

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    if ( ! mysql_query($query$link) or die (mysql_error()) ) 
    cambia cosi quella riga e vedi che errore ti da (spero che l'or non faccia casini con l'if )

  3. #3
    Utente di HTML.it L'avatar di fbracal
    Registrato dal
    Jun 2006
    Messaggi
    1,630
    Grazie Il Drugo,
    non so se l'or fa casino con l'if come dici tu,
    ma non sputa fuori nessun errore e ovviamente continua a non aggiornare la tabella.

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    <html>
    <head>
    <title>Listato 12-3: Aggiunta dell input utente ad un database</title>
    </head>
    <body>
    <?php
    if (isset($dominio) && isset($sesso) && isset($email))
    {
        
    $erroredb "";
        
    $ret aggiungi_al_database($dominio$sesso$email$erroredb);
        if (!
    $ret)
            print 
    "Errore: $erroredb
    "
    ;
        else
            print 
    "Grazie 1000!";
    }
    else 
    {
        
    scrivi_form();
    }

    function 
    aggiungi_al_database($dominio$sesso$email$erroredb)
    {
        
    $utente "fabiano";
        
    $pass "xxxxxxx";
        
    $db "test";
        
    $link mysql_pconnect"localhost"$utente$pass );
        if ( ! 
    $link )
        {
            
    $erroredb "Non posso connettermi a MySQL";
            return 
    false;
        }
        if (! 
    mysql_select_db$db$link ))
        {
            
    $erroredb mysql_error();
            return 
    false;
        }
        
    $query "INSERT INTO domini (dominio, sesso, email) VALUES ('$dominio', '$sesso', '$email')";
        if ( ! 
    mysql_query ($query$link))
        {
            
    $erroredb mysql_error();
            return 
    false;
        }
        return 
    true;
        
    mysql_close($link);
    }

    function 
    scrivi_form()
    {
        global 
    $PHP_SELF;
        global 
    $dominio;
        global 
    $sesso;
        global 
    $email;
        print 
    "<form action=\"$PHP_SELF\" method=\"POST\"\n";
        print 
    "<input type = \"text\" name=\"dominio\">";
        print 
    "Scegli il dominio che vuoi

    \n"
    ;
        print 
    "<input type = \"text\" name=\"email\">";
        print 
    "Inserisci il tuo indirizzo email

    \n"
    ;
        print 
    "<select name=\"sesso\">\n";
        print 
    "\t<option value=\"F\">Femminile\n";
        print 
    "\t<option value=\"M\">Maschile\n";
        print 
    "</select>\n";
        print 
    "<input type=\"submit\" value=\"Invia\">\n </form>\n";
    }
    ?>
    C'erano degli errori di battitura (credo). Ora l'error reporting dovrebbe funzionare.

  5. #5
    Utente di HTML.it L'avatar di fbracal
    Registrato dal
    Jun 2006
    Messaggi
    1,630
    Mi spiace, ma non funziona ancora, ho anche provato a passare nella funzione aggiungi_al_database il riferimento alla variabile $erroredb, così:
    Codice PHP:
    function aggiungi_al_database($dominio$sesso$email, &$erroredb
    ma nada de nada, non da errori e non aggiunge record alla tabella

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Non mi ero accorto...

    In pratica perchè questo script funzioni deve esserci global_vars settato a ON. Siccome nella stragrande maggioranza degli host (e di default sugli apache "amatoriali") è in OFF devi recuperare le variabili con l'array $_POST...cosi dovrebbe funzionare:

    Codice PHP:
    <html>
    <head>
    <title>Listato 12-3: Aggiunta dell input utente ad un database</title>
    </head>
    <body>
    <?php
    $dominio 
    $_POST['dominio'];
    $sesso $_POST['sesso'];
    $email $_POST['email'];

    if (isset(
    $dominio) && isset($sesso) && isset($email))
    {
        
    $erroredb "";
        
    $ret aggiungi_al_database($dominio$sesso$email$erroredb);
        if (!
    $ret)
            print 
    "Errore: $erroredb
    "
    ;
        else
            print 
    "Grazie 1000!";
    }
    else
    {
        
    scrivi_form();
    }

    function 
    aggiungi_al_database($dominio$sesso$email$erroredb)
    {
        
    $utente "fabiano";
        
    $pass "xxxxxxx";
        
    $db "test";
        
    $link mysql_pconnect"localhost"$utente$pass );
        if ( ! 
    $link )
        {
            
    $erroredb "Non posso connettermi a MySQL";
            return 
    false;
        }
        if (! 
    mysql_select_db$db$link ))
        {
            
    $erroredb mysql_error();
            return 
    false;
        }
        
    $query "INSERT INTO domini (dominio, sesso, email) VALUES ('$dominio', '$sesso', '$email')";
        if ( ! 
    mysql_query ($query$link))
        {
            
    $erroredb mysql_error();
            return 
    false;
        }
        return 
    true;
        
    mysql_close($link);
    }

    function 
    scrivi_form()
    {
        global 
    $PHP_SELF;
        global 
    $dominio;
        global 
    $sesso;
        global 
    $email;
        print 
    "<form action=\"$PHP_SELF\" method=\"POST\"\n";
        print 
    "<input type = \"text\" name=\"dominio\">";
        print 
    "Scegli il dominio che vuoi

    \n"
    ;
        print 
    "<input type = \"text\" name=\"email\">";
        print 
    "Inserisci il tuo indirizzo email

    \n"
    ;
        print 
    "<select name=\"sesso\">\n";
        print 
    "\t<option value=\"F\">Femminile\n";
        print 
    "\t<option value=\"M\">Maschile\n";
        print 
    "</select>\n";
        print 
    "<input type=\"submit\" value=\"Invia\">\n </form>\n";
    }
    ?>

  7. #7
    Utente di HTML.it L'avatar di fbracal
    Registrato dal
    Jun 2006
    Messaggi
    1,630
    Perfetto, grazie 1000000!
    Adesso funziona tutto perfettamente.
    Mi sembra di capire che se non volessei usare l'array $_POST, dovrei impostare la direttiva global_vars = "On" in httpd.conf, ho capito bene?

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    esatto


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.