Newsgroup: it.comp.www.php
Titolo: Struttra Switch e if

Salve ragazzi
vorrei esporvi un piccolo problema.
Ho del codice php strutturato ad esempio in questo modo:
switch ($i)
{
case 0:
     echo "primo opzione";
     break;
case 1:
     echo "seconda opzione";
     break;
case 2:
     ..
     ..
default:
     echo "opzione di default";
}
Nel caso CASE 2: vorrei mettere una struttura di tipo if in questo modo 
ad esempio:
case 2:
     if ( $variabile != $parametro)
     {
     >> Torna al case 1 <<
     }
     else
     {
     echo "seconda opzione";
     }
     break;
Come posso fare per poter riportare in codice corretto questa istruzione??
E' questo >> Torna al case 1 << che vorrei riportare in codice ma non so 
ne se sia possibile ne  tantomento come scriverlo.
Oppure è possibile ottenere la stessa struttura utilizzando anzichè 
switch, un altra metodologia???
Vi ringrazio infinitamente per l'eventuale aiuto.
Saluti e Buon Lavoro.
T.

      if ( $variabile != $parametro)
Soluzioni di questo tipo nascondono dietro errori di progettazione.
Perchè non ci dici qual è il problema che vorresti risolvere?
Probabilmente riusciamo a trovare una soluzione più corretta al
problema.
Ciao,
    Fabrizio
=== 
http://www.negusweb.it
 ===

 istruzione??
Cosi' come l'hai indicato NON e' possibile. Al massimo puoi crearti una
funzione che incorpora tutta la logica de case 1 e richiamarla
dall'interno dell'IF del case 2.
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

Negus ha scritto:

Salve Fabrizio e grazie per avermi risposto.
Sostanzialmente il Problema che vorrei risolvere è questo:
sto creando un modulo di registrazione in php che è suddiviso in 4 pagine:
1- Dati Personali
2- Usr e Psw ( oltre ad aver fatto i controlli che il modulo 1 sia ok)
3- Visualizza il riepilogo delle info
4- effettua la registrazione dei dati su db e da il welcome al nuovo utente
Tutte le pagine sono realizzate mediante form di tipo POST e vengono 
verificate in ogni pagina le condizioni necessarie (ex. fare in modo che 
un utente non salti direttamente alla pagina 2.. etc.)
Tutta via , pur essendo funzionante, vorrei riscriverlo utilizzando un 
Unico script php, riunendo cioè le 4 pagine in una e strutturandola in 
modo tale che a seconda di quello che accade (campi dimenticati etc.) si 
venga reindirizzati ad un altra parte dello Script.
Ora dimmi, secondo te mi sto facendo troppe seghe mentali per nulla, o è 
concettualmente corretto che riporti il tutto ad un unico script??
e se è corretto quale approcio mi consigli?
Ti ringrazio Ancora.
T.

 
Usa una funzione
-- 
"20060207: buongiorno italia, buongiorno maria.
con gli occhi pieni di malinconia"

 venga reindirizzati ad un altra parte dello Script.
Di solito prendo in considerazione la soluzione ad un unico script
pensando che, nel caso di modifiche, devo mettere la mani su più
pagine (di cui mi devo ricordare anche il loro collegamento).
Ora, visto che nel passaggio alla pagina 2 devi:
- Controllare che i dati siano stati inseriti correttamente
- Memorizzare i dati nella $_SESSION (immagino)
Nel passaggio alla pagina 3 devi:
- Controllare che l'utente non esista già
- Aggiungere alla $_SESSION i campi user e password
Nel passaggio alla pagina 4 devi:
- Salvare su db i dati della $_SESSION
- Fare un redirect o scrivere qualcosa
Ecco, in questo caso l'eventuale aggiunta o rimozione di un campo
influenzerebbe soltanto la pagina 2 e la pagina 4 ed anche in maniera
lieve.
Se le pagine sono ben strutturate diciamo che anche usando un sistema a
più pagine non avresti problemi di scalabilità e quindi il vantaggio
principale dello script (ovvero l'avere tutto sotto controllo in una
pagina) diventa abbastanza irrilevante.
Se il motivo per cui vuoi migrare ad un unico script è perchè non
vuoi avere tante pagine sparse (che io comunque chiamerei
modulo_registrazione_1, modulo_registrazione_2, ecc..., in modo di
averle una dietro l'altra), puoi farlo in modo abbastanza pulito se il
form non è molto grande.
Lo script potrebbe essere strutturato così:
<?php
      $pagina=$_GET['pagina'];
      switch ($pagina)
      {
            case 1: break;
            case 2: elabora_dati_personali(); break;
            case 3: elabora_username_password(); break;
            case 4: salva_dati_su_db(); break;
      }
      function elabora_dati_personali()
      {
               if (controllo_dati_personali())
               {
                    salva_dati_personali_su_sessione();
                    redirect("modulo_registrazione.php?pagina=2");
               }
               else
               {
                   // Gli errori sono scritti nel campo della variabile
di sessione
                    redirect("modulo_registrazione.php?pagina=1");
               }
      }
      function controllo_dati_personali()
      {
              // Controlla la validità di tutti i dati personali
passati tramite POST
             return <valore_di_ritorno_booleano>;
      }
      function salva_dati_personali_su_sessione()
      {
              // Salva tutti i dati personali passati tramite POST
nella variabile $_SESSION
              // ...
      }
      function redirect($url)
     {
              header("Location: http://....".$url);
              exit();
     }
      ...
      ...
?>
<html>
<head>
</head>
<body>
<?php  if ($pagina==1)    {  ?>
        <!-- scrive il form inserimento dati con l'analisi dei campi
della variabile di sessione
           per vedere se ci sono errori
       -->
<?  }  ?>
<?php  if ($pagina==2)    {  ?>
        <!-- scrive il form inserimento username e password con
l'analisi dei campi (questa volta solo username e password) della
variabile di sessioneper vedere se ci sono errori
       -->
<?  }  ?>
<?php  if ($pagina==3)    {  ?>
        <!-- HTML di visualizzazione dei dati   -->
<?  }  ?>
<?php  if ($pagina==4)    {  ?>
        <!-- HTML della pagina di benvenuto  -->
<?  }  ?>
</body>
</html>
A te la scelta. :-D
Se hai bisogno di aiuto specifico, fammi sapere.


 
Che dire Fabrizio,Il tuo esempio mi ha veramente Illuminato.
Era proprio la strutturazione del codice che non riuscivo ad elaborare 
correttamente, complicandomi così inutilmente la vita con "if" inutili etc.
Sei stato cortese ed esauriente.
Ti ringrazio Infinitamente.
