Newsgroup: it.comp.www.php
Titolo: Re: Una domanda sui moduli


il codice da te postato è troppo ridondante, puoi semplificarlo enormemente. 
il consiglio che ti do è di procedere nel seguente modo:
1) assegni dei valori di default se ci sono oppure inizializzi tutte le 
variabili che andranno a comporre il modulo come stringa nulla.
2) Nei vari campi richiami il valore della rispettiva variabile che hai 
dichiarato;
3) quando invii, verranno lette (durante il caricamento della pagina i 
valori inviati) e saranno assegnati alle variabili che hai definito (le 
quali non saranno più nulle ma conterranno il valore che hai passato)
4) automaticamente il campo value di ciascun campo assumerà i valori assunti 
dalle variabili.
in altre parole....
if ($_GET["nomecampo"] == "") { $nomecampo = "valoredefault"; } else { 
$nomecampo = $_GET["nomecampo"]; }
e poi nel form :
<input .............. value="$nomecampo" ..........>
secondo questo stile.
Cooper.
-- 
BlueWare Web Agency
   [http:] 
www.blueware.it
   [msn:] 
coo...@blueware.it
   [icq:] 146781935 

Ciao sto scrivendo un interfaccia con mysql e ora sono alla parte
dedicata all'inserimento dati.
Ho voluto usare un modulo con auto-invio, ho messo dei controlli e
funziona bene (in realtà devo ancora aggiugere e migliorare molte cose).
Solamente c'è una cosa che non riesco a risolvere: quando faccio
l'auto-invio, e un controllo non va a buon fine, dovrebbe riapparire il
modulo con i valori appena inseriti. Invece con mio codice il modulo
viene ricaricato vuoto. C'è un modo veloce per ovviare a questo
problema? perchè un modo complesso lo trovo... 
Vi allego il codice da me scritto (molto temporaneo..):
<?php
include("../includes/header_inc.php");
include("../includes/menu_inc.php");
$message="Inserisci i dati di un nuovo utente";
//Controllo submit
if ($_POST['submit']=="Invia"){
        echo("<div id='principale'>");
        $str_nome=$_POST['nome'];
        $str_cognome=$_POST['cognome'];
        $str_username=$_POST['username'];
        $str_password=$_POST['password'];
        $str_email=$_POST['email'];
        $str_amministra=$_POST['amministra'];
 
        if ($str_nome==""){
                $erroreinserimento=true;
                echo "Nome non inserito!</br>";
                }
        if ($str_cognome==""){
                $erroreinserimento=true;
                echo "Cognome non inserito!</br>";
                }
        if ($str_username==""){
                $erroreinserimento=true;
                echo "Username non inserita!</br>";
                }
        if ($str_password==""){
                $erroreinserimento=true;
                echo "Password non inserita!</br>";
                }
        if ($str_email==""){
                $erroreinserimento=true;
                echo "Email non inserita!</br>";
                }
 
        if ($erroreinserimento){
                $message="Controlla il corretto inserimento dei campi";
                }
                else{
                include("../includes/conndb_inc.php");
                $db_nome= "asfit";
                mysql_select_db($db_nome, $connessione) or
die("<b>errore nella selezione del db!</b>");
                $sql="INSERT INTO account (id, nome, cognome, username,
password, email, amministratore) 
                VALUES('', '$str_nome', '$str_cognome', '$str_username',
'$str_password', '$str_email','$str_amministra')";
                $query = mysql_query($sql, $connessione) or
die(errorequery());
                $message="Utente inserito correttamente";
                $inserito=true;
                //Chiudi la connessione
                mysql_close($connessione);
                }
 
 
        echo("</div>");
 
}
echo " <div id='principale'>";
echo $message;
if (!$inserito){
$autoinvio=$_SERVER['PHP_SELF'];
$modulo= <<< EOMSG
      <form action="$autoinvio" method="post"  >
        <table border="0" width="63%" cellpadding="0" cellspacing="2">
          <tr>
            <td></td>
            <td>&nbsp; </td>
          </tr>
          <tr> 
            <td width="18%" align="right">Nome</td>
            <td width="81%"><input name="nome" type="text" size="20"
maxlength="30">
              Cognome
                <input name="cognome" type="text" size="20"
maxlength="30"></td>
          </tr>
          <tr> 
            <td width="18%" align="right">Username</td>
            <td width="81%"> <input name="username" type="text"
size="20"> 
              Password 
                <input name="password" type="password" size="20"
maxlength="30">
            </td>
          </tr>
          <tr> 
            <td width="18%" align="right">E-mail</td>
            <td width="81%"><input name="email" type="text" size="30"
maxlength="64"></td>
          </tr>
          <tr> 
            <td width="18%" align="right">Ammistrazione</td>
            <td width="81%"><input type="checkbox" name="amministra"
value="true"></td>
          </tr>
          <tr> 
            <td width="18%"><br></td>
            <td width="81%"><div align="center"> 
                <input value="Invia" name="submit" type="submit">
                <input value="Resetta" name="reset" type="reset">
              </div></td>
          </tr>
        </table>
      </form>
EOMSG;
echo $modulo;
 } ?>
Consigli??
Ciao
-- 
Simone aka Hellboy
Reply to: 
simotessa(at)libero(dot)it

 <input .............. value="$nomecampo" ..........>
E' più o meno quello che volevo fare io. ho chiesto al NG solo per
vedere se c'è era una scorciatoia.
In questo caso il valore di default (quello che ho al caricamento della
pagine) è una stringa vuota.. e lo devo fare per tutti i campi del form.
CMQ aggiungendo questo controllo, non alleggerisco il codice e il resto
dei controlli mi sembrano necessari..
Grazie molto in ogni caso. Ora cercherò di studiare una soluzione
"leggera".


 il consiglio che ti do è di procedere nel seguente modo:
Ok mi sembra di aver semplificato:
Sono passato da:
        $str_nome=$_POST['nome'];
        if ($str_nome==""){
                $erroreinserimento=true;
                echo "Nome non inserito!</br>";
                }
a questa soluzione
        if ($_POST["nome"] == "") { 
                $str_nome = "";
                $erroreinserimento=true;
                echo "Nome non inserito!</br>";
                }else{ 
                $str_nome = $_POST["nome"]; 
                }
mettendo il VALUE="$str_nome"
Ora funziona ed è più ordinato.. Ma sarebbe bastato aggiungere solamente
VALUE="$str_nome" e avrebbe funzionato lo stesso... In fondo se non gli
si da un valore la variabile non ha contenuto..
Fammi sapere cosa ne pensi..
ciao
