Newsgroup: it.comp.www.php
Titolo: Mantenere i dati nel form

Ciao a tutti ho letto alcuni libri base sul php, ma non trovo una soluzione 
alla mia idea.
Vorrei mantenere i dati nel form in caso di un errore, esempio se inserisco 
il nome, il cognome, ma non la data il secondo script fa i controlli, ma 
quando mi rimanda alla prima pagina ma i dati vanno persi.
Ho provato inserire un echo, ma non funziona.
Grazie molte David
Script:
<html>
<!-- Created on: 02/04/2007 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="author" content="Unregistered User">
<meta name="generator" content="AceHTML Freeware">
</head>
<body>
<form action="visualizza.php" method="post" 
entype="application/x-www-form-urlencoded">
Nome:<input name="nome" type="text" size="30" value="<?php echo $nome;?>">
Cognome:<input name="cognome" type="text" id="cognome" size="40">
Data Nascita (gg-mm-aaaa):<input name="datanascita" type="text" 
id="datanascita" size="10">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="reset" value="Annulla">
</form>
</body>
</html>
Script: visualizza.php
<?php /* Created on: 02/04/2007 */
if ((!$_POST['nome']) || (!$_POST['cognome']) || (!$_POST['datanascita'])) {
header ("Location: form.php");
exit;
}
?>
<html>
<body>
<br>
Nome: <?php echo $_POST['nome'] ?> <br>
Cognome: <?php echo $_POST['cognome'] ?> <br>
Data Nascita: <?php echo $_POST['datanascita'] ?> <br><br>
<br>
</body>
</html>

 Grazie molte David
Dovresti utilizzare delle variabili di sessione.

 Grazie molte David
Quando processi la pagina passi tutti i $_POST a delle variabili di sessione poi nella pagina di
ritorno stampi il valore nei singoli campi.
Un bel UNSET alla fine del form e liberi la memoria.
ciao Stefano

 Ho provato inserire un echo, ma non funziona.
E cosa poteva mai fare un echo ?
Tra l'altro non hai neanche fatto una domanda col tuo post.
Come suggerimento al volo ti do quello di cambia il parametro di 
header() in modo da ripassare i valori indietro con GET e di modificare 
form.php in modo da caricarli se presenti.
Per curiosità quali libri hai letto ?

 Grazie molte David
La struttura è fuorviante. Ti consiglierei di mettere il form e il codice  
che và eseguito nella stessa pagina, senza ricorrere a sessioni varie.  
Scrivo un esempio banale (non testato, potrebbe non funzionare):
---- form.php
<?php
function ciSonoErrori ( $dati )
{
	//... qui ci metti il codice che controlla errori nei dati
	// e fai return "testo che descrive l'errore" se ci sono errori,  
altrimenti return false;
	return false;
}
$dati = array();
if ( $_POST )
{
	$dati = $_POST;
	if ( get_magic_quotes_gpc() ) //setting deprecato, elimino slashes di  
troppo
	{
		$dati = $_POST;
		foreach ( $dati as $k => $v ) $dati[ $k ] = stripslashes( $v );
	}
	$errore = !ciSonoErrori( $dati );
	if ( ! $errore )
	{
		//..... qui metti quello che succede se non ci sono errori.
 
		//includi questo comando solo se usi le sessioni, altimenti eliminalo
		session_write_close();
 
		//questo porta l'utente alla prossima pagina
		header( "Location: http://".$_SERVER[ 'SERVER_NAME'  
].'/prossimapagina.php' );
		die;
	}
	//se il flusso è arrivato fin qui c'è un errore, stampalo !
	echo "<div>$errore</div>";
}
?>
<form action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>" method="post">
	nome:	<input name="nome" value="<?php echo(isset( $dati[ 'nome' ] )  
)?htmlentities( $dati[ 'nome' ]): '' ?>" /><br />
	data di nascita:	<input name="nome" value="<?php  
echo(isset( $dati[ 'data' ] ) )?htmlentities( $dati[ 'data' ]): '' ?>"  
/><br />
	<input type="submit"
</form>
----
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

Grazie molte TAC One, ho modificato il tuo script per farlo funzionare se 
qualcun'altro fosse interessato.
grazie anche a Fabio e Stefano.
<?php
function ciSonoErrori ( $dati ){
//... qui ci metti il codice che controlla errori nei dati
// e fai return "testo che descrive l'errore" se ci sono errori,altrimenti 
return false;
If ((!$dati['nome']) || (!$dati['data'])) {
$message = "Immetti tutti i dati";
return $message;
}
else {
return false;
}
}
$dati = array();
if ( $_POST ){
$dati = $_POST;
if ( get_magic_quotes_gpc() ){ //setting deprecato, elimino slashes di 
troppo
$dati = $_POST;
foreach ( $dati as $k => $v ) $dati[ $k ] = stripslashes( $v );
}
$errore = ciSonoErrori( $dati );
if ( ! $errore ){
//..... qui metti quello che succede se non ci sono errori.
echo "Nome:" .$dati['nome'];
echo "Data:" .$dati['data'];
//includi questo comando solo se usi le sessioni, altimenti eliminalo
//session_write_close();
//questo porta l'utente alla prossima pagina
/*
header( "Location: http://".$_SERVER[ 'SERVER_NAME'
].'/prossimapagina.php' );
*/
die;
}
//se il flusso ? arrivato fin qui c'? un errore, stampalo !
echo "Errore: " . $errore;
}
?>
<form action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>" method="post">
nome: <input name="nome" value="<?php echo(isset( $dati[ 
'nome' ] ))?htmlentities( $dati[ 'nome' ]): '' ?>" /><br />
data di nascita: <input name="data" value="<?php echo(isset( $dati[ 
'data' ] ) )?htmlentities( $dati[ 'data' ]): '' ?>" /><br />
<input type="submit" name="Submit" value="Invia">
</form>
