Siamo in sintonia sto cercando di fare la stessa cosa. Stufo di fare e rifare applicazioni con form e query sul DB 1000 volte, ho deciso di tagliare la testa a toro e fare una volta per tutte una gestione sui form che controllino i dati a prescindere da come il form è costruito. Mi sono costruito una lista di parametri che userà lo script quando effettuerà il controllo cosi:
Codice PHP:
/*************************************************
Questo file deve contenere un array con
i parametri tramite i quali verrà eseguito
il controllo sui campi. Es.:
"request" => "y" sarà un campo obbligatorio
"valueType" => "numeric" sarà un valore numerico
**************************************************/
$inputClass[0] = array(
"request" => "y" ,
"valueType" => "text",
"inputType" => "text"
)
;
$inputClass[1] = array(
"request" => "y" ,
"valueType" => "text",
"inputType" => "text"
)
;
$inputClass[2] = array(
"request" => "y" ,
"valueType" => "numeric",
"inputType" => "text"
)
;
Ovviamente poi la includo nel file che esegue il controllo, dove eseguo un ciclo dove sfogliando l'array mi comporto in base ai parametri stabiliti:
Codice PHP:
$p = 0; // controlla gli errori
for($i=0; $i<$nInput; $i++)
{
//metto in sessione i valori del modulo inviato
$_SESSION["$i"]["value"] = $arrayType[$i];
$ID = $i;
$valore = $arrayType[$i];
//assegno ad ogni attributo il proprio valore (es. richiesto = SI)
$request = $inputClass[$i]["request"];
$valueType = $inputClass[$i]["valueType"];
$inputType = $inputClass[$i]["inputType"];
//se deve essere compilato ed è vuoto
if ($valore == "" and $request == "y")
{
//imposto il colore rosso alle celle desiderate
$_SESSION["$i"]["cella"] = "bgcolor='#ff0000'";
//imposto il messaggio di errore
$_SESSION["$i"]["ErrorMessage"] = "Inserire un valore";
$p = 1; //si è verificato un errore quindi $p = 1
}
//se deve essere numerico e non lo è
if($valueType == "numeric")
{
if(!getIntValue($valore))
{
//imposto il messaggio di errore
$_SESSION["$i"]["ErrorMessage"] = "Inserire un numero di telefono";
$_SESSION["$i"]["cella"] = "bgcolor='#ff0000'";
$p = 1; //si è verificato un errore quindi $p = 1
}
}
}
if($p == 1) //CI SONO ERRORI RIPRESENTO IL FORM
{
include("form.php");
}
if($p == 0) //NO ERRORI VADO AVANTI
{
//DECIDO COSA FARE COI DATI, SE MANDARLI AL DB O PER EMAIL...BO?
}
Ci sto ancora lavorando, spero di aver stimolato la tua fantasia, ciao