PhpNonostante potrebbe sembrare una banalità per i più esperti del settore, vi illustro una funzione Php da me scritta e utile per verificare che i campi di un form siano stati riempiti.

In verità già l’ottima in_array (documentazione) svolge un ottimo lavoro, se utilizzata più o meno così (supponiamo che sia già stato inviato un form con metodo “post” e che quindi esista l’array super-globale $_POST):

//Verifica che tutti i campi siano stato compilati, ovvero che nessun elemento dell'array abbia un valore vuoto
if(!in_array("", $_POST)) {
   //Tutti i campi sono stati compilati, fai qualcosa
   // ...
}
else {
   //Almeno un campo è vuoto, fai qualcosa
   // ...
}

Il problema è che con in_array vengono verificati indistintamente tutti gli elementi dell’array, quindi è utilizzabile solo se il nostro form deve essere totalmente compilato. In più, non c’è modo di venire a conoscenza – tramite questa funzione – degli elementi vuoti e quindi dei campi non compilati.

Da qui la mia funzione, che prevede delle eccezioni al controllo (e che può essere facilmente estesa per restituire anche i nomi degli elementi/campi vuoti, se ce ne sono – magari vi illustrerò io stesso un esempio fra qualche giorno):

	/**
	 * Verifica la validità dei campi di un form
	 * @param array $arrayForm				array $_POST o $_GET
	 * @param string|array $exceptions		eccezioni (array o separate da virgola)
	 * @return boolean						validità del form
	 */
	function isValidForm($arrayForm, $exceptions=Array()) {
		//Trasforma la lista delle eccezioni in un array, se è stata passata come stringa
		if(!is_array($exceptions) && trim($exceptions))
			$exceptions = explode(",", str_replace(" ", "", $exceptions));
		//Imposta una variabile di controllo, indica la validità dei dati
		//Se verrà trovato un elemento vuoto, verrà cambiata in FALSE
		$form = TRUE;
		//Cicla il contenuto dell'array
		foreach($arrayForm as $key => $value) {
			//Verifica se l'elemento è vuoto e se non è tra le eccezioni
			if(!(trim($value)) && !in_array($key, $exceptions)) {
				$form = FALSE; //Imposta la variabile di controllo su FALSE
				break;
			}
		}
		return($form);
	}

La funzione accetta due parametri: $arrayForm (obbligatorio) è l’array con gli elementi da verificare, quindi generalmente gli passeremo $_POST o $_GET, mentre $exceptions è la lista delle chiavi da escludere sul controllo, e gli si può passare o un array (dove ogni chiave da escludere è un elemento dell’array) o una stringa (dove ogni chiave è divisa da una virgola, volendo anche con spazio).

Commento velocemente il codice:

  • alle righe 9 e 10 la lista delle eccezioni, se passate come stringa, vengono trasformate in un array;
  • alla riga 13 viene impostata la variabile $form su TRUE. Questa è una variabile di controllo e sarà la variabile restituita dalla funzione. In altri termini, indicherà – alla fine della funzione – se il form per il quale abbiamo richiesto il controllo è valido o meno. Per questo motivo viene inizialmente impostata su TRUE; poi, nel corso dei controlli, se un elemento del form risulterà vuoto (riga 17) verrà modificato in FALSE (riga 18), per essere infine restituito alla fine della funzione (riga 22);
  • alla riga 15 cicliamo il contenuto dell’array con un comunissimo ciclo foreach;
  • alla riga 17 effettuiamo il controllo vero e proprio. Ovvero controlliamo che l’elemento attuale non sia vuoto e che contemporaneamente la sua chiave non sia indicata tra le eccezioni (in altri termini, l’if ha esito positivo se l’elemento non è vuoto o se, alternativamente, è una delle eccezioni che abbiamo richiesto);
  • se il precedente controllo ha avuto esito negativo (e quindi un elemento è vuoto e contemporaneamente non è tra le eccezioni), alla riga 18 cambiamo il valore della variabile di controllo in FALSE e alla riga 19 interrompiamo il ciclo con break (non è necessario continuare il ciclo e controllare anche gli altri elementi, a meno che non si voglia modificare la funzione affinché restituisca anche i nomi degli elementi/campi lasciati vuoti);
  • alla riga 22 restituiamo la variabile di controllo, che indica – come detto più volte – la validità del form. Questa era stata inizialmente impostata su TRUE: se è stata trovato un elemento vuoto, sarà invece stata modificata in FALSE, altrimenti avrà mantenuto il suo valore originale.

Supponiamo di avere tre campi: “name”, “surname” e “age”. Come già spiegato, volendo impostare questi campi tra le eccezioni, le seguenti tre sintassi sono equipollenti:

//Le eccezioni vengono passate come array: ogni eccezione è un elemento dell'array
checkForm($_POST, array("name", "surname", "age"));
//Le eccezioni vengono passate come una stringa, divise da una virgola più uno spazio
checkForm($_POST, "name, surname, age");
//Le eccezioni vengono passate come una stringa, divise solo da una virgola (senza spazio)
checkForm($_POST, "name,surname,age");

In tutti e tre i casi il funzionamento sarà lo stesso.

Vediamo ora qualche applicazione pratica. In un caso reale avremo un vero e proprio form, qui invece mi limiterò a impostare manualmente e in chiaro alcuni elementi di $_POST (le chiavi/campi saranno ancora “name”, “surname” e “age”), per rendere perfettamente chiaro il funzionamento.

$_POST['name'] = "Mirko";
$_POST['surname'] = "Pagliai";
$_POST['age'] = "23";

if(checkForm($_POST)
   print "Corretto";
else
   print "Incorretto";

L’esempio sopra riportato stamperà “Corretto”.

$_POST['name'] = "Mirko";
$_POST['surname'] = "";
$_POST['age'] = "23";

if(checkForm($_POST)
   print "Corretto";
else
   print "Incorretto";

L’esempio sopra riportato stamperà “Incorretto” (“surname” è vuoto!).

$_POST['name'] = "Mirko";
$_POST['surname'] = "";
$_POST['age'] = "23";

if(checkForm($_POST, "surname")
   print "Corretto";
else
   print "Incorretto";

L’esempio sopra riportato stamperà “Corretto” (“surname” è vuoto, ma è indicato tra le eccezioni!).

$_POST['name'] = "";
$_POST['surname'] = "";
$_POST['age'] = "23";

if(checkForm($_POST, "surname")
   print "Corretto";
else
   print "Incorretto";

L’esempio sopra riportato stamperà “Incorretto” (“name” e “surname” sono entrambi vuoti, ma solo “surname” è indicato tra le eccezioni!).

$_POST['name'] = "";
$_POST['surname'] = "";
$_POST['age'] = "23";

if(checkForm($_POST, "name, surname")
   print "Corretto";
else
   print "Incorretto";

L’esempio sopra riportato stamperà “Corretto” (“name” e “surname” sono entrambi vuoti, ma solo entrambi indicati tra le eccezioni!).

XHTML - Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>