form dinamico in php

  • Creatore Discussione Creatore Discussione benfy85
  • Data di inizio Data di inizio

benfy85

Nuovo Utente
15 Feb 2009
14
0
0
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>";  
?>

Non so dove sia l'errore... boh :crying:
 
Posta il link della pagina. E' davvero strano.
Comunque "piccolo" appunto... i tag html si usano così:
Codice:
<nome_tag opzione="valore" ecc="ecc">
e non:
Codice:
<nome_tag opzione = "valore" ecc = "ecc">
 
Posta il link della pagina. E' davvero strano.
Comunque "piccolo" appunto... i tag html si usano così:
Codice:
<nome_tag opzione="valore" ecc="ecc">
e non:
Codice:
<nome_tag opzione = "valore" ecc = "ecc">

ma la pagina è in localhost...
ah ok..per i tag html
 
Eliox, ci stavo pensando anche io... credo che derivi da un post del form...
Alla riga precedente c'è extract($_POST).

è uno degli errori... in verità doveva essere solo 'submit' normale...
ma comunque ci deve essere ancora qualcosa che non va nei controlli della mail e della data di nascita, perché me li segna sempre come se fossero sbagliati, anche se non lo sono, impedendomi di accedere al messaggio dei dati corretti e al caricamento nel db
 
Direi di non utilizzare extract() per importare variabili dall'array $_POST, correggettimi se sbaglio ma credo che, oltre ad essere rischioso, per gli input funzioni con register_globals in on.

Parto dal principio che il register_globals sia in off, quindi direi che come primo passo sarebbe meglio sostituire tutte le variabili da form con i corrispondenti parametri (ad es, $_POST['submit'] invece di $submit).
 

Discussioni simili