Corso PHP base

Come recuperare i valori di un modulo web

Imparerai a scrivere un'applicazione in PHP che recupera i dati quali il nome, il cognome, l'indirizzo il telefono di un tuo ipotetico navigatore.

videocorso php

Siamo finalmente giunti alla lezione che inizierà ad introdurti nel mondo della programmazione web avanzata. Niente di difficile, ovviamente, ma molto entusiasmante se alla fine riuscirai ad applicare tutti i concetti appresi in queste lezioni.

Iniziamo allora a vedere come è possibile scrivere il famoso programmino read.php che ti permetterà di recuperare ogni valore che l’utente inserirà all’interno dei campi dei tuoi moduli web.

Prenderò in esame tutte le 5 tipologie di campi viste nelle lezioni precedenti, in particolare nella lez. nr. 3. Ti invito pertanto a ripassarla velocemente per avere le idee fresche.

>> Come posso recuperare un valore da un campo TEXT?

Supponi di aver creato un form per poter recuperare il nome e l'email di un navigatore che si collega al tuo sito e compila il tuo modulo.

Potrebbe essere ad esempio un modulo per l'iscrizione alla tua newsletter.

Esempio:

<form method="post" action="http://www.tuosito.com/read.php">
Inserisci il tuo nome: <input type="text" name="nome"><br>
Inserisci la tua email: <input type="text" name="email"><br>
<input type="submit" value="Iscriviti alla newsletter">
</form>

Come vedi ho inserito due campi "text" (nome ed email) più il bottone per l'invio dei dati "submit". Questi ultimi saranno inviati al programmino che ho chiamato "read.php" e che si trova all'interno della root del tuo sito (attributo action http://www.tuosito.com/read.php).

NB: Avrai certamente notato che ho inserito per entrambi i campi (nome e cognome), gli attributi name=”nome o valore del campo”. Ti ricordo nuovamente che questo attributo è FONDAMENTALE per riconoscere in modo univoco i campi da parte del programmino read.php che tra poche righe sarai in grado di creare. (ripassa lez. nr. 6)

Ma allora vediamo come è fatto questo programmino e cosa deve fare?

Lo scopo del programma è recuperare i dati che l'utente ha inviato dopo che ha cliccato sul pulsante "Iscriviti alla newsletter". Questi dati sono il suo nome e la sua email.

Una volta recuperati, potremmo in seguito mostrarli a video, inviarli tramite posta o salvarli su un database.

Partiamo come sempre dalle cose semplici! Una base di partenza per la scrittura del programmino "read.php" è:

1. <?php
2.   $tuo_nome = $_POST(‘nome’);
3.   echo "Il tuo nome è  $tuo_nome”;
4. ?>

ANALISI

Prima di tutto nota il simboli di apertura (<?php) e chiusura (?>) del tuo codice php [riga 1 e 4].

Cosa fa questo codice? Nella riga 2, viene recuperato il valore che l'utente ha inserito nel campo che hai identificato con l'attributo name="nome", cioè il campo dove l'utente ha dovuto inserito il suo nome.

Nella riga 3, mostro a video questo dato.

Semplice non è vero!


Avrai intuito che, per recuperare il valore di un campo "TEXT" basta semplicemente scrivere:

$_POST(‘identificativo dell’attributo name del campo TEXT’);


Nel nostro caso, oltre a recuperare il valore del campo nome, l'ho salvato in una variabile d'appoggio che ho chiamato "$tuo_nome".

NB: Ricorda sempre di mettere il dollaro prima del nome della variabile!!!

NB: Ricorda sempre di mettere il punto e virgola alla fine di ogni istruzione!!!

NB: Ricordati sempre di racchiudere l’identificativo del campo tra apici. Potresti anche usare le doppie virgolette.

E se volessi recuperare il campo email?

Banale! Dovresti scrivere: $_POST(‘email’)

Quindi l'esempio completo diventa:

1. <?php
2.   $tuo_nome = $_POST(‘nome’);
3.   $tua_email = $_POST(‘email’);
4.   echo "Il tuo nome è $tuo_nome e la tua email e’ $tua_email”;
5. ?>

Semplice non e' vero? A questo punto hai creato senza accorgerti la tua prima applicazione in PHP, che ti permette di recuperare i valori di un campo text di un modulo del tuo sito web.

>> Come posso recuperare un valore da un campo CHECKBOX?

Supponi di avere un sito che vende cd musicali. Hai creato un form per permettere all'utente di richiedere delle anteprime di brani musicali di diversi autori.

Tramite il modulo vuoi recuperare l'email del navigatore e conoscere i suoi gusti musicali per poter fare delle statistiche sui cantanti italiani di maggior gradimento.

Avrai quindi predisposto un modulo con supponiamo tre campi checkbox con i seguenti nomi di cantanti: Eros Ramazzotti, Laura Pausini, Jovannotti.

Esempio:

<form method="post" action="http://www.tuosito.com/ascolta.php">
Email: <input type="text" name="email"><br>
Quali cantanti vuoi ascoltare?<br>
Eros Ramazzotti <input type="checkbox" name="c1" value="Rammazzotti">
Laura Pausini <input type="checkbox" name="c2" value="Pausini">
Jovannotti <input type="checkbox" name="c3" value="Jovannotti"><br>
<input type="submit" value="Ascolta">
</form>

Quello che vedrà il navigatore sarà:

 

Come vedi ho inserito i tre campi checkbox con le etichette dei nomi dei tre cantanti, ed ho assegnato all'attributo "name" una sigla identificativa dei tre cantanti (“c1”,”c2”,”c3”), in modo da identificarli in maniera univoca, quando scriverai il programmino “ascolta.php”.

NB: Avrai potuto scegliere un qualsiasi identificativo come per esempio autore1, autore2, autore3 etc. L’importante e’ che tu non inserisca spazi o caratteri strani (vedi lez. nr.6).

NB: Avrai certamente notato che ho inserito un nuovo attributo che ho chiamato “value” a cui ho assegnato il cognome di ogni cantante. Vedremo a breve il perché!

Un programmino base (ascolta.php), per il recupero di tali valori sarà:

1. <?php
2. $tua_email = $_POST(‘email’);
3. $cantante1 = $_POST(‘c1’);
4. $cantante2 = $_POST(‘c2’);
5. $cantante3 = $_POST(‘c3’);
6. echo "Ascolta i nuovi brani di  $cantante1 -  $cantante2 - $cantante3”;
7. ?>

ANALISI

Prima di tutto nota i soliti simboli di apertura (<?php) e chiusura (?>) del tuo codice php [riga 1 e 4].

Cosa fa questo codice?

Nella riga 2 recupero, tramite "$_POST", il valore inserito dall'utente nel campo email che ti ricordo è un campo di tipo “TEXT”.

Nelle righe 3,4,5 invece recupero, ancora tramite "$_POST", i valori selezionati dall'utente nei tre campi checkbox.

Semplice non è vero!


Avrai intuito che, anche per recuperare il valore di un campo "CHECKBOX", basta semplicemente scrivere:

$_POST(‘identificativo dell’attributo name del campo CHECKBOX’’);


NB: Ti posso fare una semplice domanda? Secondo te cosa recupero tramite $_POST(‘c1’) se il campo checkbox, per definizione, non mi permette di inserire alcun valore?

Mi spiego meglio: nel campo “TEXT” hai visto che è l’utente che scrive un valore, che potrebbe essere il suo nome, cognome la sua email etc. Nel caso di un campo checkbox l’unica cosa che può fare l’utente e’ selezionare il quadratino (spuntare la casella) oppure no. Ma allora che valore recupero?

Per rispondere a questa domanda ti invito a riguardare il modulo di prima:

<form method="post" action="http://www.tuosito.com/ascolta.php">
Email: <input type="text" name="email"><br>
Quali cantanti vuoi ascoltare?<br>
Eros Ramazzotti <input type="checkbox" name="c1" value="Rammazzotti">
Laura Pausini <input type="checkbox" name="c2" value="Pausini">
Jovannotti <input type="checkbox" name="c3" value="Jovannotti"><br>
<input type="submit" value="Ascolta">
</form>

Come vedi ho evidenziato un nuovo attributo “value” che, guarda caso, contiene un valore. In questo caso quindi sei tu che preinposti il valore del campo. L’utente, spuntando la casella check box relativa è come se confermasse di volerti fornire come valore quello che hai scritto all’interno dell’attributo value.
Tale valore potrebbe coincidere pari pari con l’etichetta che hai dato al campo, oppure, come il caso sopra, una sua abbreviazione: es. invece di scrivere “Eros Ramazzotti” potresti scrivere “Ramazzotti” etc.

NB: Puoi inserire un qualsiasi valore all’interno dell’attrubuto “value” quindi con o senza spazi, utilizzando minuscole o maiuscole etc. ma ti consiglio comunque di inserire sempre un valore che rispecchi l’etichetta inserita per il relativo campo checkbox.

Vedremo nella prossima lezione che questa tecnica verrà utilizzata anche per il campo radio.


Continuando nell’analisi, nella riga 4 mostro a video i nomi dei cantanti selezionati dall'utente.

Esiste un metodo alternativo per gestire il recupero dei valori di un campo checkbox che permette di risparmiare qualche riga di codice PHP soprattutto quando si ha a che fare con un numero elevato di campi.

Invece di creare tre campi checkbox con identificativi diversi dell'attributo “name” (come nell'esempio sopra c1,c2,c3), si crea un unico identificativo (es. c) e poi si cerca in qualche modo di spezzare il valore rucuperato.

Vediamo allora come posso scrivere lo stesso esempio di sopra utilizzando questa nuova tecnica:

Esempio OTTIMIZZATO

<form method="post" action="http://www.tuosito.com/info.php">
Email: <input type="text" name="email"><br>
Quali cantanti vuoi ascoltare?<br>
Eros Ramazzotti <input type="checkbox" name="c" value="Rammazzotti">
Laura Pausini <input type="checkbox" name="c" value="Pausini">
Jovannotti <input type="checkbox" name="c" value="Jovannotti">
<input type="submit" value="Ascolta">
</form>

Come vedi i tre campi checkbox ora hanno lo stesso attributo name="c". A livello di layout del modulo ovviamente non è cambiato nulla, ma se andiamo a scrivere il programma per recuperare i valori noteremo una grossa differenza.

In sostanza invece di considerare i tre campi checkbox relativi ai cantanti in modo distinto l’uno dall’altro, li considero come un unico campo che può assumere tre diversi valori in contemporanea.

Per recuperare i dati quindi dovro' semplicemente scrivere:

1. <?php
2. $ua_email = $_POST(‘email’);
3. $cantanti = $_POST(‘c’);
4. echo "Ascolta i nuovi brani di  $cantanti”;
5. ?>

ANALISI

Come vedi nella riga 3. ho recuperato, con un'unica istruzione $_POST, invece di tre come nel caso precedente, tutti e tre i possibili cognomi dei cantanti (attributo value) selezionabili  dall'utente.

NB: In questo caso i valori recuperati dai campi checkbox sono raggruppati come una sequenza di dati separata dalla virgola. Pertanto per poterli isolare sarà necessario utilizzare un’apposita istruzione che abbiamo visto alla fine della lezione nr.4 e cioè la funzione preg_split() che vedremo meglio nel corso avanzato.

Bene anche per oggi è tutto! Alla prossima lezione del corso base

Indice Corso PHP