Ciao neo e grazie, ieri poi girando qua e là in rete ho scoperto questo switch e ci ho provato....ma ho problemi ad inserire case per numeri "<="... cioè ho scritto così:
<?php
$errori=$_POST['errori'];
switch ($errori) {
case '0':
header ("location:risultatotest/da0.php");
break;
case '<=10':
header("location:risultatotest/da1a10.php");
break;
case '<=30':
header("location:risultatotest/da11a30.php");
break;
case '<=50':
header("location:risultatotest/da31a50.php");
break;
case '<=100':
header("location:risultatotest/da51a100.php");
break;
case '<=150':
header("location:risultatotest/da101a150.php");
break;
}
?>
Se nel form inserisco 0 mi manda alla pagina giusta ma per gli altri che hanno istruzione " >o< e = " ad un numero non và in nessuna pagina......
Sai il motivo?
Grazie mille, ciao e scusate il ritardo nella risposta.
A dire la verità si può a leggere il manuale online del PHP, negli esempi c'è qualcosa del genere, ma non l'ho mai provato:
PHP:
$errori=$_POST['errori'];
switch ($errori) {
case '0':
header ("location:risultatotest/da0.php");
break;
case '$errori<=10':
header("location:risultatotest/da1a10.php");
break;
case '$errori<=30':
header("location:risultatotest/da11a30.php");
break;
case '$errori<=50':
header("location:risultatotest/da31a50.php");
break;
case '$errori<=100':
header("location:risultatotest/da51a100.php");
break;
case '$errori<=150':
header("location:risultatotest/da101a150.php");
break;
}
ma devi ripetere la variabile $errori ogni volta, poco male se funziona va bene.
Ad ogni buon conto usare switch o elseif è analogo, l'importante è l'eleganza dello script, ovvero se quanto da te realizzato è solido.
Per solido intendo a prova di errore.
Solitamente nelle lunghe serie di elseif è facile sbagliare dopo un po' che si scrivono cose sempre uguali, magari riportandole con un copia e incolla per modificarle subito dopo.
La strada migliore la devi trovare da te, sicuramente ci vuole molto tempo per dicedere da quale parte andare
Io avrei usato questo costrutto, simile a quello di Borgo ma che mi permette di modificare facilmente la pagina da mostrare se un domani cambiassi idee e inoltre:
PHP:
$pagina = 'da0.php'; // Zero eRori, beati loro!
if(( $errori > 0) && ($errori <=10)){
$pagina = 'da1a10.php';
}elseif(($errori > 10) && ($errori <=30)){
$pagina = 'da11a30.php';
}elseif(....){
//eccetera eccetera.....
}else{//orrore
echo "come hai fatto a fare 151 errori su 150 domande????"
$errore = 'bad_page.php';
}
// Invia alla pagina!
header ("location: risultatotest/$pagina");
La prima volta inserisci una pagina predefinita, per esempio quella che da zero errori, o una pagina che vuoi tu, serve a eliminare un ciclo, tanto comunque una pagina la devi pur sempre mostrare.
Inoltre nei cicli uso la costruzione a dopie parentesi, in questo modo se non viene risolta la prima equazione passa oltre senza stare a risolvere anche la seconda e fare il confronto, meno cicli = meno tempo.
Alla fine del ciclo la variabile $pagina conterrà comunque il nome di una pagina da mostrare, ma avrai scritto meno e fatto un ciclo in meno che non è poco per il povero server.