• User

    Scrivere da form html su DB MYSQL

    Ciao a tutti, sono una new entry.
    :giggle:

    Finalmente sono riuscita a leggere connettendomi a un Mysql in locale sulla mia macchina, dei dati contenuti in una tabella.

    Ora vorrei fare l'inverso.
    Vorrei da un form html, premendo il tasto invio scrivere in questa tabella.

    Premetto che una sono una vera niubba, vi dico come ho impostato la cosa.

    Allora ho un db con una tabella chiamata "inserisci" con attualmente 3 campi:
    1)ID
    2)Nome
    3)Data

    Io vorrei da un form html che quando premo il tasto invia, un file Php si connetta al Db e mi vada a popolare o meglio inserire i nuovi record nella tabella.

    Come posso fare?
    Posto il form html che ho preparato:

    <style type="text/css">
    <!--
    .Stile1 {font-size: 24px}
    -->
    </style>
    <div align="center">
    <p class="Stile1">INSERIMENTO DATI</p>
    <p class="Stile1">Inserisci Il tuo nome e la tua data di nascita</p>
    </div>

    <form method="GET" action="inserisci.php">
    <p> </p>
    <p>
    <p>
    <p>nome
    <input type="text" name="data" size="20">
    <p>Data<input type="text" name="nome" size="20"></p>
    <p><input type="submit" value="Invia" name="x"></p>
    </form>

    Mente il file che si connette al DB:

    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='gianni'; // utente per l'accesso
    $pass_db=''; // password con i soli due apici se non ne abbiamo impostata una

    mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name);

    ?>

    Grazie a tutti.


  • Bannato User Attivo

    Nella pagina indicata nell'action del form (inserisci.php) i dati te li ritrovi nell'array $_GET se il method del form è GET o nell'array $_POST se il method è POST.
    All'interno dell'array la chiave dei tuoi dati è il nome che gli hai dato all'interno del form, quindi nel tuo caso il nome lo trovi in $_GET['nome'].


  • User

    @saro78 said:

    Nella pagina indicata nell'action del form (inserisci.php) i dati te li ritrovi nell'array $_GET se il method del form è GET o nell'array $_POST se il method è POST.
    All'interno dell'array la chiave dei tuoi dati è il nome che gli hai dato all'interno del form, quindi nel tuo caso il nome lo trovi in $_GET['nome'].

    😮
    Potresti postarmi un esempio di codice?
    Grazie


  • Bannato User Attivo

    $nome = isset($_GET['nome']) ? $_GET['nome'] : "";
    $data = isset($_GET['data']) ? $_GET['data'] : "";

    if($nome && $data){
    $query = "INSERT INTO tabella (id, nome, data) VALUES (0, '$nome', '$data')";
    $result = mysql_query($query) or die("Errore nella query:".mysql_error());
    } else {
    print "Torna indietro e riempi i campi: nome e data";
    }


  • User Attivo

    Vabbè, non è necessario assegnare tutta quella pappardella a $nome e $data :D, io consiglio questo:

    Pagina del form:

    [html]<style type="text/css">
    <!--
    .Stile1 {font-size: 24px}
    -->
    </style>
    <div align="center">
    <p class="Stile1">INSERIMENTO DATI</p>
    <p class="Stile1">Inserisci Il tuo nome e la tua data di nascita</p>
    </div>
    <form method="get" action="inserisci.php">
    <p> </p>
    <p> </p>
    <p> </p>
    <p>Nome <input type="text" name="data" size="20">
    <p>Data <input type="text" name="nome" size="20"></p>
    <p><input type="submit" value="Invia"></p>
    </form>[/html]

    (al bottone di submit non è necessario dargli il nome :2:

    Pagina che inserisce i dati nel database:
    [php]<?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='gianni'; // utente per l'accesso
    $pass_db=''; // password con i soli due apici se non ne abbiamo impostata una

    $nome = $_GET['nome']; // Nome
    $data = $_GET['data']; // Data
    $dmerr = "Torna indietro e riempi i campi: nome e data"; // Messaggio di errore se non hai compilato tutti i campi
    $merr = "Errore nell'inserimento dei dati"; // Messaggio di errore se i dati non vengono inseriti correttamente nel database

    if($nome == "" || $data == "") {
    echo $dmerr;
    }
    else {
    $db = mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name, $db);

    mysql_query("INSERT INTO tabella (nome, data) VALUES ("".$nome."", "".$data."")", $db) or die($merr);

    mysql_close($db);
    }
    ?>[/php]

    Ovviamente imposta che il campo id nel database sia un auto increment 😉

    Fammi sapere... 🙂

    Ciao... :gthi:


  • Bannato User Attivo

    EDIT:
    mi rimangio quello che ho scritto 😄


  • User

    Sarei curioso di sapere se ha funzionato specialmente nell'inserimento della data visto che mysql accetta yyyy-mm-dd ,sempre che il campo sia date ?


  • User

    @biagiosurace said:

    Sarei curioso di sapere se ha funzionato specialmente nell'inserimento della data visto che mysql accetta yyyy-mm-dd ,sempre che il campo sia date ?

    Intanto ti ringrazio per il codice...

    Riscontro una piccola anomalia....quando lancio il bottone mi chiede se voglio salvare il File inserisci.php...

    In poche parole mi fa il download del file...non capisco come mai, eppure il file è all'interno della cartella dove è lanciato il webserver
    :gtsad:


  • User

    @Shanas_72 said:

    Intanto ti ringrazio per il codice...

    Riscontro una piccola anomalia....quando lancio il bottone mi chiede se voglio salvare il File inserisci.php...

    In poche parole mi fa il download del file...non capisco come mai, eppure il file è all'interno della cartella dove è lanciato il webserver
    :gtsad:
    Ho testato il tuo Script ho verificato l'inversione della etichetta data e nome infatti doce inserisco il nome in realtà mi prende la data, controlla. ho creato il db gestione con phpmyadmin ed ho costruito la "tabella". Ho cambiato qualcosa nel codice php e mi funziona riesco ad inserire i dati nella tabella ripeto la data 2008-05-28 forse non capito il cosa vuoi ottenere?

    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='root'; // utente per l'accesso
    //$pass_db=''; // password con i soli due apici se non ne abbiamo impostata una
    $nome = $_GET['nome']; // Nome
    $data = $_GET['data']; // Data
    $dmerr = "Torna indietro e riempi i campi: nome e data"; // Messaggio di errore se non hai compilato tutti i campi
    $merr = "Errore nell'inserimento dei dati"; // Messaggio di errore se i dati non vengono inseriti correttamente nel database
    if($nome == "" || $data == "") {
    echo $dmerr;
    }
    else {
    $db = mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name, $db);
    mysql_query("INSERT INTO tabella (nome, data) VALUES ('$nome','$data')", $db) or die($merr);
    //mysql_query("INSERT INTO tabella (nome, data) VALUES ("".$nome."", "".$data."")", $db) or die($merr);
    mysql_close($db);
    }
    ?>

    prova


  • User

    @biagiosurace said:

    Ho testato il tuo Script ho verificato l'inversione della etichetta data e nome infatti doce inserisco il nome in realtà mi prende la data, controlla. ho creato il db gestione con phpmyadmin ed ho costruito la "tabella". Ho cambiato qualcosa nel codice php e mi funziona riesco ad inserire i dati nella tabella ripeto la data 2008-05-28 forse non capito il cosa vuoi ottenere?

    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='root'; // utente per l'accesso
    //$pass_db=''; // password con i soli due apici se non ne abbiamo impostata una
    $nome = $_GET['nome']; // Nome
    $data = $_GET['data']; // Data
    $dmerr = "Torna indietro e riempi i campi: nome e data"; // Messaggio di errore se non hai compilato tutti i campi
    $merr = "Errore nell'inserimento dei dati"; // Messaggio di errore se i dati non vengono inseriti correttamente nel database
    if($nome == "" || $data == "") {
    echo $dmerr;
    }
    else {
    $db = mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name, $db);
    mysql_query("INSERT INTO tabella (nome, data) VALUES ('$nome','$data')", $db) or die($merr);
    //mysql_query("INSERT INTO tabella (nome, data) VALUES ("".$nome."", "".$data."")", $db) or die($merr);
    mysql_close($db);
    }
    ?>

    prova

    Ora mi da questo errore...
    Notice: Undefined variable: pass_db in c:\documents and settings\administrator\desktop\web\inserisci.php on line 16
    Errore nell'inserimento dei dati


  • User

    @Shanas_72 said:

    Ora mi da questo errore...
    Notice: Undefined variable: pass_db in c:\documents and settings\administrator\desktop\web\inserisci.php on line 16
    Errore nell'inserimento dei dati

    Ok questo problema l'ho risolto.

    Ora pero vedo che nel db al campo NOME mi inserisce la data, mentre nel campo data mi inserisce 0000-00-00:?


  • User

    @Shanas_72 said:

    Ok questo problema l'ho risolto.

    Ora pero vedo che nel db al campo NOME mi inserisce la data, mentre nel campo data mi inserisce 0000-00-00:?

    Ok piccolo aggiormamento:

    Ecco il codice:

    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='gianni'; // utente per l'accesso
    $pass_db=''; // password con i soli due apici se non ne abbiamo impostata una

    mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name);
    ?>

    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='gianni'; // utente per l'accesso
    //$pass_db=''; // password con i soli due apici se non ne abbiamo impostata una
    $nome = $_GET['nome']; // nome
    $data = $_GET['data']; // data
    $dmerr = "Torna indietro e riempi i campi: nome e data"; // Messaggio di errore se non hai compilato tutti i campi
    $merr = "Errore nell'inserimento dei dati"; // Messaggio di errore se i dati non vengono inseriti correttamente nel database
    if($nome == "" || $data == "") {
    echo $dmerr;
    }
    else {
    $db = mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name, $db);
    mysql_query("INSERT INTO inserisci (nome, data) VALUES ('$nome','$data')", $db) or die($merr);
    //mysql_query("INSERT INTO inserisci(nome, data) VALUES ("".$nome."", "".$data."")", $db) or die($merr);
    mysql_close($db);
    }
    print ("Operazione eseguita!");
    ?>

    Ora mi inserice correttamente il campo nome della form html, mentre la data rimane a 0000-00-00

    In poche parole non mi prende il campo data della form html:gthi:


  • User

    HO RISOLTO!

    Ok pare che funzioni!
    Come si fa in questo caso a costringere che la data venga inserita nel formato AAAA-MM-GG? Cioè se è diversa da quel formato che dia un errore?


  • User

    @Shanas_72 said:

    HO RISOLTO!

    Ok pare che funzioni!
    Come si fa in questo caso a costringere che la data venga inserita nel formato AAAA-MM-GG? Cioè se è diversa da quel formato che dia un errore?
    Forse la soluzione migliore non è questa ma io utilizzo il metodo Post tu usa anche GET.
    Ho costruito un form per reperire i dati:

    <style type="text/css">
    <!--
    .Stile1 {font-size: 24px}
    .Stile2 {
    color: #0000FF;
    font-weight: bold;
    }
    -->
    </style>
    <div align="center">
    <p class="Stile1">INSERIMENTO DATI</p>
    <p class="Stile1">Inserisci la tua data di nascita e Il tuo nome </p>
    </div>
    per inserire la data devi creare tre select: anno,mese,giorno così
    <form method="POST" action="inserisci.php">

                      </td>
    

    <td height="30" width="150%" colspan="1">
    <select name="giorno">
    <option value="01">1</option>
    <option value="02">2</option>
    <option value="03">3</option>
    <option value="04">4</option>
    <option value="05">5</option>
    <option value="06">6</option>
    <option value="07">7</option>
    <option value="08">8</option>
    <option value="09">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>
    </select>
    <span class="Stile2">Giorno</span></td>

                    <td height="30" width="25%">
    

    </td>

                      <select name="mese">
                        <option value="01">Gennaio</option>
                        <option value="02">Febbraio</option>
                        <option value="03">Marzo</option>
                        <option value="04">Aprile</option>
                        <option value="05">Maggio</option>
                        <option value="06">Giugno</option>
                        <option value="07">Luglio</option>
                        <option value="08">Agosto</option>
                        <option value="09">Settembre</option>
                        <option value="10">Ottobre</option>
                        <option value="11">Novembre</option>
                        <option value="12">Dicembre</option>
                      </select> 
                      <span class="Stile2">Mese</span></td>
                  </tr>
    

    <td height="30" width="25%">
    </td>

                      <select name="anno">
                        <option>2008</option>
                        <option>2009</option>
                        <option>2010</option>
                      </select>
                      <span class="Stile2">Anno</span></td>
                  </tr>
                  <p>&nbsp;</p>
    

    <p>Nome 
    <input type="text" name="nome" size="20">
    </p>
    <p><input type="submit" value="Invia"></p>
    </form>
    a questo punto ti costruisci la tua paginetta in php ed inserisci il tuo script
    <?php
    $host_db='localhost'; // nel caso in cui lavoriamo su host locale
    $db_name='gestione'; // nome del database usato
    $user_db='root'; // utente per l'accesso
    //$pass_db=''; // password con i soli due apici se non ne abbiamo impostata una
    $nome = $_POST['nome']; // Nome
    $canno= $_POST['anno'];
    $cmese = $_POST['mese'];
    $cgiorno = $_POST['giorno'];
    $cdata = $_POST['anno']."-".$_POST['mese']."-".$_POST['giorno'];
    $dmerr = "Torna indietro e riempi i campi: nome e data"; // Messaggio di errore se non hai compilato tutti i campi
    $merr = "Errore nell'inserimento dei dati"; // Messaggio di errore se i dati non vengono inseriti correttamente nel database
    if($nome == "" || $cdata == "") {
    echo $dmerr;
    }
    else {
    $db = mysql_connect($host_db,$user_db,$pass_db); //connessione al DBMS
    mysql_select_db($db_name, $db);
    mysql_query("INSERT INTO tabella (nome, data) VALUES ('$nome','$cdata')", $db) or die($merr);
    mysql_close($db);
    }
    ?>
    crea il tuo db e vedrai che funziona
    Fammi sapere
    a presto


  • User Attivo

    Fai tutta sta pappardella? 😄

    Fai così:

    alla pagina del form togli il campo della data e nel file php sostituisci questo:

    [php]mysql_query("INSERT INTO tabella (nome, data) VALUES ("".$nome."", "".$data."")", $db) or die($merr);[/php]

    con questo:

    [php]mysql_query("INSERT INTO tabella (nome, data) VALUES ("".$nome."", "now()")", $db) or die($merr);[/php]

    Fammi sapere se funziona... 😉

    Ciao... :gthi:


  • User

    Se ti riferisci alla data del momento in cui scrivi il tuo nome penso che non sia necessario inserire la data in quanto timestamp mi pare che già inserisce la data e l'ora ,se ti riferisci alla data di nascita ,ed è questo che ho capito ,fammi sapere come inserisci il tutto in modo diverso??
    Grazie