• User

    aiuto semplificare controllo per calcolare il numero di risposte inviate da un form

    <?php

    Ciao ragazzi, allora ho un form con delle domande,

    l'utente ne deve scegliere una soltanto e rispondere,

    questo il form (pagina: domanda.php):

    $domanda1="Qual è il nome del cane?";
    $domanda2="Qual è il nome del gatto?";
    $domanda3="Qual è il nome del topolino?";

    print"Ti preghiamo di scegliere e rispondere ad una sola domanda. Grazie.";
    print"<form action=stampa_domanda.php method=post>
    Qual è il nome del cane?
    <input type=hidden name=domanda1 value="$domanda1"><br>
    <input type=text name=risposta1 value=""><br><br>
    Qual è il nome del gatto?
    <input type=hidden name=domanda2 value="$domanda2"><br>
    <input type=text name=risposta2 value=""><br><br>
    Qual è il nome del topolino?
    <input type=hidden name=domanda3 value="$domanda3"><br>
    <input type=text name=risposta3 value=""><br><br>

       <input type=\"submit\" name=\"Invia\" value=Invia>
       <input type=\"reset\" name=\"canc\" value=Canc>
       </form>";
    

    Cliccando sul pulsante submit la domanda e la risposta

    vengono inviate al file "stampa_domanda.php" e,

    dal momento che l'utente deve scegliere una sola domanda e non una di più

    eseguo questo controllo (pagina: stampa_domanda.php) :

    se l'utente ha risposto a tutte le domande o a più di una

    **if (($risposta1 != "") && ($risposta2 != "") && ($risposta3 != "") ||
    ($risposta1 != "") && ($risposta2 != "") && ($risposta3 == "") ||
    ($risposta2 != "") && ($risposta3 != "") && ($risposta1 == "") ||
    ($risposta3 != "") && ($risposta1 != "") && ($risposta2 == ""))
    ** {
    header("Refresh: 5; URL=domanda.php");
    print "<center>Attenzione! Rispondi a una sola domanda.<br>";
    print "<a href="domanda.php">Torna Indietro</a></center>";

        }
        else     # altrimanti se come da regolamento ha risposto a una sola domanda
        { 
          if(($risposta1 != "")||($risposta2 != "")||($risposta3 != ""))
          {     #  se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste
             if(($risposta1 != "") && ($risposta2 == "") && ($risposta3 == ""))
              {
               $domanda_scelta=$domanda1;
                 $risposta_data=$risposta1;
              }
              #  se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste
              if (($risposta2 != "") && ($risposta1 == "") && ($risposta3 == ""))
                {
                    $domanda_scelta=$domanda2;
                 $risposta_data=$risposta2;      
                }
                #  se ha risposto a questa e non alle altre due la domanda scelta e la risposta sono queste
                if (($risposta3 != "") && ($risposta1 == "") && ($risposta2 == ""))
                {      
                    $domanda_scelta=$domanda3;
                 $risposta_data=$risposta3;
                }
                
     header("Refresh: 5; URL=domanda.php");
            print "<center>Hai scelto di rispondere alla domanda:<br><b> " . $domanda_scelta . "</b><br>";
            print "La risposta che hai dato è:<b> " . $risposta_data . "</b></center>";
          }
          else #  se non ha risposto a nessuna domanda
          {
              header("Refresh: 3; URL=domanda.php"); 
       print "<center>Non hai risposto a nessuna domanda!<br>";
       print "<a href=\"domanda.php\">Torna Indietro</a></center>";
          }
        }
    

    allora lo script ed il controllo funzionano perfettamente ma, ora mi sorge un problema,

    cioè dovrei aumentare il numero di domande da tre a 6 oppure 10 addirittura ma, fare il controllo

    come quello che ho fatto e che ho evidenziato in grassetto diventa un lavoro assai tedioso oltre che uno spreco di

    risorse,

    potete aiutarmi xfavore a semplificare questo controllo?

    Sto smanettando da pochissimo col php, forse con un array contenente tutte le domande e/o risposte potrei risolvere

    il problemino?

    Chi può aiutarmi a completare? Ciao e grazie a tutti.

    ?>
    :ciauz:


  • Bannato User Attivo

    metti un radiobutton davanti alla domanda, per te la risposta giusta è quella data per la domanda con il radiobutton checkato, il resto lo ignori.


  • User Attivo

    Oppure un menu a tendina dove scegliere la domanda a cui si vuole rispondere e prendi il valore passato dall'option della tendina ignorando le altre...

    keiske


  • User

    ok ragazzi, 🙂 🙂 ottime idee, provo qual è quella più adatta... sono entrambe ottime. vi farò sapere... Ciao 🙂