37 Esercizio sugli array e i cicli
Provare prima da soli a costruire 10 text box con il ciclo for per l’inserimento degli hobby.
Poi costruire una seconda pagina php che ricostruisce la prima con però i dati inseriti e confermati da invia e sotto una domanda: “Ma quali hai iniziato nell’ultimo anno?” e ripropone gli hobby inseriti con a fianco un check box.
Ma quali hai iniziato nell’ultimo anno?
Hobby1
Hobby2
….
Di seguito la soluzione del codice:
pagina array_esercizio.php
<html> <form action="earray_esercizio.php" method="post"> <?php echo "Inserisci gli hobby!" . "<br />"; for ($a=0; $a<10; $a++) echo "<input type='text' name='$a' value=''>" . "<br />"; echo "<input type='submit'>" . "<input type='reset'>"; ?> </form> </html>
pagina earray_esercizio.php
<html> <form name="hobbyform1" action="earray_esercizio.php" method="post"> <?php echo "Inserisci gli hobby!" . "<br />"; for ($a=0; $a<10; $a++) { $hobby=$_REQUEST[$a]; echo "<input type='text' name='$a' value='$hobby'>" . "<br />"; } ?> <input type='submit'><input type='reset'> </form> <p>Ma quali hai iniziato nell'ultimo anno?</p><br /> <form name="hobbyform2" action="earray_esercizio.php" method="post"> <?php for ($a=0; $a<10; $a++) { $hobby=$_REQUEST["$a"]; echo $hobby . "<input type='checkbox' name='hobbycheck($a)' value='$hobby'>" . "<br />"; } ?> <input type='submit'><input type='reset'> </form> </html>
Un buon metodo, in una situazione come questa, è quello di non dover gestire 2 pagine php diverse, ma agire sulla stessa, ecco la pagina hobby.php che farà tutto.
<form name="hobbyform1" action="hobby.php?stato=1" method="post">
Intanto nella action vado a richiamare lo stesso nome della pagina seguito una query string seguito da una coppia di identificatore (stato nome a scelta) e un valore (1). Questo mi permette di capire se la pagina è già stata caricata con dei dati o meno con:
if (isset($_REQUEST['stato'])) { $value=$_REQUEST[$a]; echo "value='$value'"; }
se si, allora inserisco i valori immessi dall’utente nei relativi campi ($a e l’indice del ciclo for).
Fatto questo, creo la seconda parte del programma dove ricontrollo se la query string è settata e ricreo il ciclo.
Ecco il codice completo
<html> <form name="hobbyform1" action="hobby.php?stato=1" method="post"> <?php $nl="<br />"; echo "Inserisci gli hobby!" . "<br />"; for ($a=0; $a<10; $a++) { echo "<input type='text' name='$a' "; if (isset($_REQUEST['stato'])) { $value=$_REQUEST[$a]; echo "value='$value'"; } echo "/>" . $nl; } if (isset($_REQUEST['stato'])) { echo $nl . "Ma quali hai iniziato nell'ultimo anno? <br />"; for ($i=0; $i<10; $i++) { $value=$_REQUEST[$i]; echo $value . "<input type='checkbox' name='$i' value='$value' />" . "<br />"; } } ?> <input type='submit'><input type='reset'> </form> </html>