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.

Inserisci gli 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>