- Home
- Categorie
- Coding e Sistemistica
- Coding
- Form dinamico in php
-
Form dinamico in php
Form dinamico in php
Ciao,
sto facendo un form dinamico, guardando delle dispense, ma non capisco come creare un form per la registrazione utenti, che mi tenga i dati nel caso in cui si verifichi un errore e mi aggiunga di lato i commenti degli errori o se il form è corretto, mi dia un messaggio di avvenuta registrazione.
Ho provato a farlo, ma il form che sia corretto o sbagliato, dopo aver premuto il bottone Registra, rimane sempre nella stessa pagina e non fa nulla... non mi dà nemmeno messaggi di errore!
[php]
extract($_POST);
$iserror = false;$inputlist = array("nome" => "Nome", "cognome" => "Cognome", "indirizzo" => "Indirizzo", "citta" => "Città", "cap" => "CAP", "nazione"=>"Nazione", "data_nascita" => "Data di Nascita", "email" => "Email", "password" => "Password" );
if(isset ($submit))
{
if($nome == "")
{
$formerrors["nomeerror"] = true;
$iserror = true;
}if($cognome == "") { $formerrors["cognomeerror"] = true; $iserror = true; } if($indirizzo == "") { $formerrors["indirizzoerror"] = true; $iserror = true; } if($citta == "") { $formerrors["cittaerror"] = true; $iserror = true; } if($cap == "") { $formerrors["caperror"] = true; $iserror = true; } if($nazione == "") { $formerrors["nazioneerror"] = true; $iserror = true; } if((!ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $data_nascita))||($data_nascita == "")) { $formerrors["data_nascitaerror"] = true; $iserror = true; } if ((!ereg ("/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/", $email)) || ($email == "")) { $formerrors["emailerror"] = true; $iserror = true; } if($password == "") { $formerrors["passworderror"] = true; $iserror = true; } if(!$iserror) { if (!($link = mysql_connect( $db_hostname, $db_user, $db_password ))) print("Errore di connessione al server"); if(!mysql_select_db($dbname, $link)) print("Errore di accesso al database"); $query1 = "INSERT INTO utente (nome, cognome, indirizzo, citta, cap, nazione, data_nascita) VALUES ('$nome', '$cognome', '$indirizzo', '$citta', '$cap', '$nazione', '$data_nascita')"; if (!mysql_query($query1, $link)) { die('Error: ' . mysql_error()); } $query2 = "INSERT INTO account (email, password, ruolo, nome, cognome) VALUES ('$email', '$password', '', '$nome', '$cognome')"; if (!mysql_query($query2, $link)) { die('Error: ' . mysql_error()); } else { echo "<h3>I tuoi dati sono stati aggiunti nel nostro database</h3> <h3><a href=\"index.php\">Ora puoi fare il LOGIN</a></h3> </body> </html>"; die(); } } if($iserror) { echo "<br/><p id=\"note\">Attenzione!Correggere i valori nei campi che hanno l'asterisco accanto!</p>"; }
}
echo "<div id="page">
<div id="content">
<h1> Registrazione</h1>
<p> Effettua la registrazione e potrai continuare nell'acquisto</p>
<div id="form">
<form class="registra" id="registra" method="post" action="registra.php">
<table>";foreach ( $inputlist as $inputname => $inputalt )
{
if($inputalt == "Password")
{
echo "<tr><td>$inputalt :</td><td><input type = 'password' name = '$inputname' id = '$inputname' value = '" . $$inputname . "' />";
}
else
{
$inputtext = $inputvalues[ $inputname ];
echo "<tr><td>$inputalt :</td><td><input type = 'text' name = '$inputname' id = '$inputname' value = '" . $$inputname . "' />";
}if ( $formerrors[ ($inputname)."error" ] == true ) { echo "<span style = 'color : red'>*</span>"; }
}
if ($formerrors["data_nascitaerror"]) { echo "<span style = 'color : red'>Il formato deve essere: anno-mese-giorno, es. 1979-11-23.</span>"; } if ($formerrors["emailerror"]) { echo "<span style = 'color : red'>Il formato deve essere come [email protected]</span>"; } echo "<tr><td><input type=\"submit\" id = '$submit' name = '$submit' value=\"Registra\" /></td></tr> </table> </form> </div> </div> </div> </body> </html>";
?>
[/php]Non so dove sia l'errore... boh
-
-
Ciao,
la prima volta che carichi la pagina ed esegui lo script la variabile $submit non è settata e il pulsante di invio ha id e name vuoti. Il form viene correttamente inviato, ma non esistendo il dato $_POST['submit'] e di conseguenza $submit, il controllo iniziale
[php]if(isset ($submit))[/php]
è sempre falso.Ecco due soluzioni possibili:
-
aggiungi un else all'IF di cui sopra
[php]
else $submit='nome_del_pulsante';
[/php] -
modifica la riga del pulsante in questo modo:
[php]
echo "<tr><td><input type="submit" id = 'nome_del_pulsante' name = 'nome_del_pulsante' value="Registra" /></td></tr>
[/php]
Alessandro
-