I form in una solo pagina sono dei form particolari. Infatti invece che puntare ad un’altra pagina puntano a se stessi es.

<HTML>
<BODY>
<CENTER>
<?php
echo "<FORM METHOD=POST ACTION=\"$PHP_SELF\">";
?>
<INPUT TYPE="SUBMIT" VALUE="Invia le informazioni!">
<INPUT TYPE="RESET" VALUE="Cancella!">
</FORM>
</BODY>
</HTML>

Ricordandoci di chiamarlo con l’estesione .php. Come si vede nel’action c’e $PHP_SELF quella che contiene il nome dello script corrente. Ma come possiamo usare al meglio questa opzione. Possiamo creare una pagina con un if. Cioè se il contenuto di una variabile è vuoto allora mi mistri il form altrimenti mi mostri un’altra cosa.

<HTML>
<BODY>
<?php
if ( (empty($nome)) || (empty($cognome))) {
# esegue questa parte perché il form non è stato ancora inviato
echo "<FORM METHOD=POST ACTION=\"$PHP_SELF\">";
echo "Qual è il tuo nome? <BR> <INPUT TYPE=\"TEXT\" NAME=\"nome\">";
echo "<BR>Qual è il tuo cognome? <BR><INPUT TYPE=\"TEXT\" NAME=\"cognome\">";
echo "<BR><BR>";
echo "<INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Invia le informazioni!\">";
echo "<INPUT TYPE=\"RESET\" VALUE=\"Cancella!\">";
echo "</FORM>";

} else {
# il form è stato inviato
echo “elaborazione…<BR>”;
echo “Le informazioni sono… nome: $nome , cognome: $cognome”;
}
?>
</BODY>
</HTML>

Cioè se la variabile nome o cognome sono vuote mi mostra il form.

<!–nextpage–>

Per verificare che un form è stato inviato possiamo anche usare un campo nascosto. Ma non solo possiamo verificare i campi inseriti dall’utente. Vi spiegherò passo passo il fomr con i commenti (#) altrimenti alla fine sarebbe scomodo

<HTML>
<BODY>
<?php
# metto tuto il mio form in una variabile
$form="<FORM METHOD=\"GET\" ACTION=\"$PHP_SELF\">
<CENTER><B><H3> Nuovo utente </H3></B></CENTER>
Nome utente<BR> <INPUT TYPE=\"TEXT\" NAME=\"nome\" VALUE=\"$nome\">
<BR>Indirizzo dell'utente<BR><INPUT TYPE=\"TEXT\" NAME=\"indirizzo\" VALUE=\"$indirizzo\">
<BR><BR>
# ecco il campo nascosto
<INPUT TYPE=\"HIDDEN\" NAME=\"stato\" VALUE=\"inviato\">
<INPUT TYPE=\"SUBMIT\" NAME=\"submit\" VALUE=\"Invia le informazioni!\">
<INPUT TYPE=\"RESET\" VALUE=\"Cancella!\">
</FORM>";
# inizio a controllare
$errore_nome=0;
$errore_indirizzo=0;
# il form è stato inviato?
# se il campo nascosto non c'e mostra il form
if ( $stato != "inviato" ) {
echo "$form";
#ma se c'e mi controlli l'input
} else {
if (empty($nome)) {
echo "<B>Errore:</B> Manca il nome dell'utente<BR>";
# se manca  mi imposti la variabile a 1
$errore_nome=1;
}
if (empty($indirizzo)) {
echo "<B>Errore:</B> Manca l'indirizzo dell'utente<BR>";
# se manca  mi imposti la variabile a 1
$errore_indirizzo=1;
}
# se c'e l'errore mi mostri il form
if (($errore_nome) || ($errore_indirizzo)) {
echo "$form";
} else {
#altrimenti  esegui
echo "elaborazione...<BR>";
echo "<B>$nome</B> con indirizzo <B>$indirizzo</B> è stato aggiunto";
# invia un email o scrive su di un file
}
}
?>
</BODY>
</HTML>

Un form cosí si poteva gestire anche con l’uso delle funzioni però quando noi dichiaravamo la funzione dovevamo dichiarare le nostre variabili all’interno della funzione con global

function form(){
global $variabile
global $variabile1

Poi php
}

Dovevamo mettere tutte le variabili che usavamo anche $PHP_SELF. Se non capite scrivetemi sul mio forum