Esempio di form PHP per inserire dati in database MYSQL

DiFabio

Esempio di form PHP per inserire dati in database MYSQL

Esempio di form PHP per inserire dati in database MYSQL

php-mysql-form

In questo articolo vi mostriamo un esempio di form PHP per inserire dati in database MYSQL. Quello di cu abbiamo bisogno sono 2 pagine (una html e una php) per creare un semplice form per inserire e registrare i dati e un database mysql, contenente, per il nostro esempio, una tabella di nome anagrafica composta dai campi “name” e “address“.

Prima di tutto dobbiamo creare il database mysql all’interno del quale andremo a salvare i dati inseriti dall’utente. A riguardo abbiamo creato una guida “Creare database mysql” (leggi questo articolo prima di proseguire, nel caso non sappia come creare un db) che fa proprio al nostro caso.

Form HTML

Il primo file si chiamerà form.html e altro non è che un semplice form che cattura i dati inseriti dall’utente al momento della digitazione: Inserisci il codice qui sotto nelle tue pagine web per poterlo utilizzare.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>PAGINA CARICAMENTO DATI</title>
</head>

<body>
<table border="0">
  <tr>
    <td align="center">Inserisci i dati richiesti</td>
  </tr>
  <tr>
    <td>
      <table>
        <form method="post" action="input.php">
        <tr>
          <td>Nome</td>
          <td><input type="text" name="name" size="20">
          </td>
        </tr>
        <tr>
          <td>Indirizzo</td>
          <td><input type="text" name="address" size="40">
          </td>
        </tr>
        <tr>
          <td></td>
          <td align="right"><input type="submit" 
          name="submit" value="Sent"></td>
        </tr>
        </form>
        </table>
      </td>
    </tr>
</table>
</body>
</html>

Dopo il salvataggio, la pagina dovrebbe apparire così:

form html

form html

form PHP per inserire dati in database MYSQL

Il secondo file (input.php) file recupera i dati inseriti (nome e indirizzo) e li inserisce nelle 2 tabelle.

 

<?
//la stringa mysql_connect deve essere compilata con i dati relativi al proprio database
// HOST = IP server Mysql
// USER = Nome utente databse
// PASSWORD = Password utente databse
mysql_connect("HOST","USER","PASSWORD");//database connection
// Qui sotto al posto di NOME_DATABASE, inserite il nome del vostro DB
mysql_select_db("NOME_DATABASE");

// recupero i valori si NOME e INDIRIZZO e li assegno alle variabili $name e $address
$name = $_POST['name'];
$address = $_POST['address'];


//inserting data order
$toinsert = "INSERT INTO anagrafica
			(name, address)
			VALUES
			('$name',
			'$address')";

//declare in the order variable
$result = mysql_query($toinsert);	//order executes
if($result){
	echo("<br>Inserimento avvenuto correttamente");
} else{
	echo("<br>Inserimento non eseguito");
}
?>

Puoi scaricare i files contenuti in questa pagina, aiutandoci con una condivisione. Dopo la condivisione potrai accedere al link per il download dei files appena elencati:

[sociallocker id=”604″]

DOWNLOAD

 [/sociallocker]

Se avete dubbi o domande, commentate.

Buon lavoro!

Info sull'autore

Fabio administrator

Appassionato di tecnologia, lavoro nel mondo dell'informatica dal 1999. Mi diletto con PHP e MYSQL e ultimamente mi sono appassionato al mondo SEO ...più per sfida che per necessità. In questo blog voglio condividere con gli utenti quello che imparo, sperando che altri possano trarne "profitto" .

45 Commenti finora

FABIOPubblicato il2:17 pm - Lug 10, 2014

ciao ho provato il tuo script ma non riesco a scrivere sul database mi potresti aiutare

AlessandroPubblicato il12:54 pm - Ago 17, 2014

Ciao, a me dà un errore in questa riga:
mysql_select_db(“u418751281_nyvej”);

    Fabio IegriPubblicato il1:15 pm - Ago 17, 2014

    Ciao Alessandro, sembra siano sbagliate le credenziali per accedere al database.
    Controlla il nome del database, lo username e la password

      AlessandroPubblicato il4:17 pm - Ago 17, 2014

      Mi da questo errore:
      Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/u418751281/public_html/test/index.php on line 9

        Fabio IegriPubblicato il6:22 pm - Ago 17, 2014

        Se sei certo che la riga 9 sia mysql_select_db, prova a usare gli apici singoli anziché i doppi. Se non dovesse andare ne anche con gli apici singoli, prova a togliergli.
        Ciao
        Fabio

          AlessandroPubblicato il7:06 pm - Ago 17, 2014

          Grazie delle risposte, posto qui l’intero file ovviamente nascondendo i dati di accesso:

          E’ solo un file di test visto che sto imparando.

          AlessandroPubblicato il7:08 pm - Ago 17, 2014

          setcookie(‘nome’, $_POST[‘nome’]);
          echo “Ciao” .$_POST[‘nome’];
          mail(“[email protected]”, “Utente”, $_POST[‘nome’], “From: [email protected]“);
          echo “Mail inviata!”;
          //DB
          mysql_connect(“—-“,”—“,”—“);
          mysql_select_db(“—“);
          $dati = “INSERT INTO test(nome) VALUES($_POST[‘nome’])”;
          mysql_query($dati);

          Fabio IegriPubblicato il10:10 am - Ago 18, 2014

          Faccio una prova con il tuo codice e ti dico.
          Dammi qualche minuto.

          Fabio IegriPubblicato il11:27 am - Ago 18, 2014

          Ciao,
          ho fatto i test (solo della insert, non dell’invio mail). TI riporto il codice funzionante.
          Ho fatto una sola modifica per velocizzare i test; per la variabile $nome, anziché prendere il valore dalla post, l’ho impostata staticamente con $nome=”Fabio”;
          Ti basta commetare la riga e nella insert sostituire VALUES(‘$nome’) con VALUES($_POST[‘nome’])

          < ? setcookie(‘nome’, $_POST['nome']); echo “Ciao” .$_POST['nome']; mail("[email protected]", "Utente", $_POST['nome'], "From: [email protected]"); echo “Mail inviata!”; $nome="Fabio"; mysql_connect("localhost","TUOUSER","TUAPWD");//database connection // Qui sotto al posto di NOME_DATABASE, inserite il nome del vostro DB mysql_select_db("test"); //inserting data order // TEST è il nome della tabella // nome è il il nome del campo della suddetta tabella $dati = "INSERT INTO test (nome) VALUES('$nome')"; mysql_query($dati); ?>

          Fammi sapere se ha funzionato.
          Ciao
          Fabio

AlessandroPubblicato il1:55 pm - Ago 18, 2014

Grazie mille, ora funziona

MattiaPubblicato il2:22 pm - Ott 13, 2014

Il form come postato inizialmente mancava della cosa piu importante: prelevare e postare sul database. Cosi com’è manda la form (con tanto di errori) ma nel database i campi risultano vuoti. Pertanto, vanno aggiunte queste 2 stringhe:

$name = $_POST[‘name’];
$address = $_POST[‘address’];

M.

peppePubblicato il4:40 pm - Dic 4, 2014

Complimenti Fabio per il sito…
sto provando, ma ho il seguente problema:
quando dalla pagina form html clicco su sent mi apre la finestra salva con nome con il nome del file input.php e non riesco ad andare avanti.
Riesci a consigliarmi?
Grazie

Creare database mysql con phpmyadmin esempio –Pubblicato il10:58 am - Mag 26, 2015

[…] Ora potete utilizzare questo database per creare form PHP per inserire dati in database MYSQL […]

carmine pelusoPubblicato il1:55 pm - Lug 29, 2015

ciao premesso che sono un mezzo principiante, ho fatto tutto come descritto ma la risposta è sempre inserimento non riuscito ho un server mysql aruba.

ho creato la tabella “anagrafica”
ho configurato le credenziali
ho inserito il nome del db dove è presente la tabella.
che altro devo fare?

    Fabio IegriPubblicato il11:32 am - Lug 30, 2015

    Buongiorno Carmine,
    senza vedere il tuo ambiente l’unica cosa che mi viene in mente è che potresti non aver aggiornato correttamente il puntamento al tuo DB.
    Hai provato scaricando i files allegati all’articolo?

    Li ho provati personalmente più di una volta e sono certo funzionino.
    Unica accortezza dopo averli scaricate è quella di aggiornare il file di configurazione, inserendo le coordinate /ip, user e pwd) del tuo database.

    Scrivimi ancora se non va neanche scaricando gli allegati.

FabioPubblicato il2:15 am - Set 3, 2015

Ciao Fabio, ho letto questo articolo e lo trovo fantastico. Espongo il mio problema. Fino ad oggi ho usato joomla per aggiornare il mio sito con news e tutto il resto ma ho integrato con frontpage le sezioni dove gli utenti si divertivano con fantacalcio e torneo pronostici. Da Luglio è stato tolto il supporto a programmi obsoleti (come appunto frontpage2003) lasciandomi in mezzo ad un mare di guai. Prima per l’invio di formazioni e pronostici avevo creato dei form spettacolari dove gli utenti inserivano le loro scelte ed una volta cliccato su invia le stesse venivano incollate su una pagina nel sito. E’ possibile fare tutto questo in php? Ad oggi ho trovato solo form che riuscissero ad inviare i dati via mail, e questo come il tuo al database, ma uno che me li incolli direttamente sul sito? Ti ringrazio anticipatamente.

    Fabio IegriPubblicato il8:13 am - Set 3, 2015

    Ciao Fabio, SI, si puoi fare.
    Con la form presente nell’articolo (adattandola alle tue necessità) puoi inserire i dati nel database e con poche righe di codice puoi estrarli dal DB e pubblicarli nella pagina che desideri.
    Se mi dici che tipo di dati pubblichi (campi), provo a scriverti 2 righe di codice.
    Ciao
    F.

FabrizioPubblicato il4:35 pm - Set 16, 2015

Ciao Fabio, ho provato ad inserire i dati e funziona tutto perfettamente, il solo problema è che quando vado a a leggere i dati sul Database non li restituisce, nonostante il campo ID incrementi normalmente. Io lavoro su un normale sito Altervista basato su HTML5
Grazie Mille

MattiaPubblicato il12:17 pm - Nov 13, 2015

Ciao Fabio e complimenti 🙂 una domandona: ho seguito i consigli e tutto funziona. Ora, sempre da pagina web, è possibile visualizzare il risultato di una query? Per esempio, metti che voglio sapere tutti i nomi delle persone che abitano nella località x, come posso fare? Grazie mille

    FabioPubblicato il12:19 pm - Nov 13, 2015

    Ciao Mattia, in pratica vorresti estrarre e visualizzare i dati anziché inserirli?
    Ho capito bene?
    Ciao
    Fabio

      MattiaPubblicato il6:01 pm - Nov 13, 2015

      Ciao Fabio e grazie della veloce risposta!
      In realtà vorrei sia inserirle che estrarli e visualizzarli 🙂 per l’inserimento non ho avuto problemi seguendo i tuoi esempi, ma ora sto facendo dei tentavi per la visualizzazione ma non riesco!

      per rimanere fedele al tuo esempio, se volessi visualizzare in una pagina web tutte le persone che si chinano Fabio e abitano a Roma (per esempio 😛 ) cosa dovrei scrivere in php?

        FabioPubblicato il6:37 pm - Nov 13, 2015

        Ciao Luca.
        Per visualizzare i dati la strada da percorrere è più o meno la stessa. Basta usare una select invece della insert.
        Se mi dai un po di tempo, ti posto un esempio.
        Ciao
        Fabio

        FabioPubblicato il10:21 am - Nov 16, 2015

        Mattia scusami per il ritardo. We impegnato 🙂

        Ecco 2 righe veloci per risolvere i tuoi dubbi. Con queste righe puoi estrarre tutti i record che hanno come nome Fabio.
        Crea un file che si chiama estrai.php (è solo un esempio, puoi chiamarlo come vuoi) e richiamalo da browser con:
        http://localhost/estrai.php?name=Fabio


        < ? mysql_connect("HOST","USER","PASSWORD");//database connection // Qui sotto al posto di NOME_DATABASE, inserite il nome del vostro DB mysql_select_db("NOME_DATABASE");
        // recupero i valori si NOME e INDIRIZZO e li assegno alle variabili $name e $address
        $name = $_GET['name'];
        $address = $_GET['address'];

        mysql_select_db("$DB_name",$link);
        $q= mysql_query("SELECT * FROM anagrafica where name ='$name'");
        while($row = mysql_fetch_array($q)) {
        echo $nome= $row['name'];

        }

        ?>

        Questo è solo un semplice esempio. Potrei modificare a tuo piacimento sia le query string (ES. name=Fabio&Address=Roma) e modificando la query con $q= mysql_query(“SELECT * FROM anagrafica where name =’$name’ and address like ‘%Roma%'”);

        Spero di esserti stato d’aiuto.
        Appena possibile scriverò un articolo dedicato più completo

        Se hai dubbi rispondi pure a questo commento.
        Ciao
        Fabio

LucaPubblicato il12:10 am - Dic 30, 2015

Ciao, sto facendo un sito nel quale devo mettere una pagina la quale mi permette di aggiungere dati in un db. Se io copio il tuo codice cambiando solo i dati per collegarmi al db va tutto bene ma se io inserisco nuovi campi, non mi fa inserire niente? Secondo te cosa potrebbe essere? Di seguito l’intero codice.

PAGINA CARICAMENTO DATI

Inserisci i dati richiesti

Nome programma

Breve descrizione

Descrizione completa

Link download

Link sito

<?
//la stringa mysql_connect deve essere compilata con i dati relativi al proprio database
// HOST = IP server Mysql
// USER = Nome utente databse
// PASSWORD = Password utente databse

$db = mysql_connect("sql.lucafranchi.it","lucafran29346","luca77158") or die ('Errore in connessione');//database connection
// Qui sotto al posto di NOME_DATABASE, inserite il nome del vostro DB
mysql_select_db("lucafran29346", $db) or die ('Errore in selezione db');

// recupero i valori si NOME e INDIRIZZO e li assegno alle variabili
$name = $_POST['name'];
$desc = $_POST['desc'];
$description = $_POST['description'];
$download = $_POST['download'];
$site = $_POST['site'];

//inserting data order
$toinsert = "INSERT INTO anagrafica (name, desc, description, download, site)
VALUES ('$name', '$desc', '$description', '$download', '$site')";

//declare in the order variable
$result = mysql_query($toinsert); //order executes
if($result){
echo("Inserimento avvenuto correttamente”);
} else{
echo(“Inserimento non eseguito”);
}

?>

Grazie e buone feste!

    FabioPubblicato il10:26 am - Gen 12, 2016

    Buongiorno,
    scusa per il ritardo ma ho avuto dei problemi. Leggo la tua richiesta e provo a darti una risposta.

    Grazie
    Fabio

    FabioPubblicato il10:35 am - Gen 22, 2016

    Ciao Luca,
    come promesso, anche se con un po di ritardo, eccomi ad aiutarti.
    Il codice sembra corretto. Hai aggiunto i campi al database?
    Se aggiorni il codice, il tuo DB deve essere pronto a recepirlo.

    Fammi sapere
    Ciao
    Fabio

ValerioPubblicato il3:09 pm - Mag 23, 2016

CIao,
come si puo gestire la cosa in “locale”? magari usando un db di access sempre con un form web ma che stia sempre in locale (magari in una share di rete)
grazie

    FabioPubblicato il1:44 pm - Mag 24, 2016

    Ciao Valerio e grazie per averci scritto.
    Se usi una macchina con windows ci sono prodotti già pronti per fare queste cose localmente, come WAMPP (XAMPP per linux e derivati).

    Fammi sapere se hai problemi
    Ciao
    F.

LucaPubblicato il6:31 pm - Mag 25, 2016

Ciao faBIO! sTO CERCANDO DI FAR FUNZIONARE QUESTO CODICE MA QUANDO PREMO IL TASTO PER INVIARE I DATI ALLA PAGINA PHP HO ERRORE
“La pagina localhost non funziona
localhost al momento non è in grado di gestire la richiesta.”

qUALCHE SUGGERIMENTO?

p.s.
BEL SITO.. l’UNICA COSA, CHI E’ DALTONICO (COME ME) NON RIESCE A LEGGERE BENE I CONTENUTI…

    FabioPubblicato il1:13 pm - Mag 26, 2016

    Ciao Luca e grazie per averci contattati.
    Se non riesci a contattare localhost potrebbe significare che il webserver non è attivo. Prova a sostituirlo con 127.0.0.1. Oppure da riga di comando prova a fare il telnet sulla ports di ascolto del webserver e guarda la riposta (o l’eventuale timeout).

    Mi dispiace per il problema dei colori. Non ci ho mai pensato e di conseguenza, evidentemente sbagliando, non me ne sono mai preoccupato. Come potrei migliorare?
    Grazie 1000
    Fabio

ENRICOPubblicato il7:38 pm - Lug 21, 2016

CIAO
Warning: mysql_connect(): Access denied for user ‘Sql993712’@’89.46.105.192′ (using password: YES) in /web/htdocs/www.ciplo.eu/home/php/inputdati.php on line 8

QUESTO IL MESSAGGIO DI ERRORE, LA COSA CHE MI INCURIOSISCE E’ CHE L’INDIRIZZO IP NON E QUELLO IMPOSTATO DA ME…..

    FabioPubblicato il3:19 pm - Lug 26, 2016

    Ciao Enrico,
    cone le poche informazioni che ho a disposizione mi viene da pensare che il file che richiami stia puntando a un file di configurazione diverse.

    Se Riesci a dare altre informazioni, provo a fare di meglio.

    Grazie
    Fabio

MAXPubblicato il6:49 am - Lug 30, 2016

ciao e grazie per aiuto, PER CHI COME ME, E A ZERO DI TUTTO.
STO PROVANDO A METTERE QUESTI 2 FILE FORM.HTML e INPUT.PHP,
NELLA MIA DIRETTORI WEB HOSTING DOVE HO LA PAGINA INDEX DI UN SITO WEB PROVA.
LA MIA DOMANDA E QUESTA DOPO AVER RILETTO PIU VOLTE I DUE FILE,
NON CAPISCO COME FA IL FILE input.php a cercare e riconoscere il file form.html e prendersi i dati dalle variabili ?
o al contrario il file form dopo invio sul tasto sent, come fa a cercare il file di nome input.php ed eseguire ?
dove e come si comunicano? come si legano ?
questo perche se io creo piu tabelle, creo piu form con nomi diversi per ogni tabella, e forse penso dovro creare piu file input.php con nomi diversi per raccogliere i dati dai form e metterli sul dbase.
io sto leggendo di tutto ma le cose piu banali non le trovo,

poi 2 domanda e mia idea : se e come ti ho scritto in precedenza
alora dentro il mio sito su una pagina html la chiamo menu
e ci metto dei bottoni form inseri anagrafica e collego con link al form specifico di quella tabella ? e del file input.php ne creo tanti e forse ogni form va a collegarsi non so come al suo input.php anche si gli do nomi diversi ???

grazie non vado oltre perke non serve a farmi fantasie e paranoie aspetto una gentile risposta per illuminarmi e darmi fiducia e speranza , max

angeloPubblicato il6:28 pm - Ago 18, 2016

CIAO FABIO, POTRESTI GENTILMENTE INTEGRARE L’ESEMPIO DA TE PROPOSTO AGGIUNGENDO UNA TABELLA ESTERNA COME CITTÀ (DOVE VI POSSA ESSERE LA RELAZIONE 1- MOLTI) PER RENDERE L’ESEMPIO PIÙ INTERESSANTE? TI RINGRAZIO E RIMANGO IN ATTESA TUE NOTIZIE.

enricoPubblicato il4:29 pm - Mag 25, 2017

Ciao
stavo cercando una soluzione simile per fare delle iscrizioni a delle gare online
premetto che sto lavorando con xampp in locale
Ho scaricato sia il dbase che il form dopo averne creato uno in precedenza che non registrava i dati nel dbase ma anche utilizzando l’esempio i dati non vengono memorizzati evidentemente mi sfugge il passaggio per memorizzarli.
Se mi puoi dare un aiuto

Grazie

samuPubblicato il3:45 pm - Set 17, 2019

Ciao ma prima devo creare una tabella all’interno del database di nome “anagrafica” con le colonne “nome” e “address”?

Giovanni ClericiPubblicato il3:10 pm - Nov 9, 2019

Un messaggio per FABIO avrei bisogno di qualche programmatore o DEVELOPER come si chiamano oggi per completare un nostro sito WEB
Cordiali SAluti
[email protected]

Lascia una risposta