verification formulaire

ioop
Invité n'ayant pas de compte PHPfrance

04 juin 2010, 22:11

Bonsoir,

J'ai fais un quiz. La personne arrive sur la page, rentre son nom et prenom, réponds aux différentes questions du quiz et appui sur un bouton valider. Le bouton valider permet d'envoyer un mail automatique qui comporte le nom et prenom ainsi que la note obtenue au quizz. Ce bouton valider permet également d'afficher la correction du quiz.

Mon soucis est le suivant : je souhaiterai intégrer à mon code un moyen qui permet que lorsque la personne oublie de remplir le champ non et prenom, un message d'erreur apparait et donc le mail ne s'envoie pas et la correction ne s'affiche pas.

Il doit y avoir du javascript dans l'histoire. J'arrive à réaliser 2 champs nom et prenom et un bouton envoyer sur une nouvelle page. ça fonctionne niquel mais je n'arrive pas à intégrer ceci dans mon projet. Donc si quelqu'un peut m'aider svp. Mercin infiniment ^^

Voici le code :

infodebase.php
<html>
        <head>
                <title>Quiz Info de base</title>
        <style type="text/css">
            <!--
            body {
              font-family: Verdana, Arial, Helvetica, sans-serif;
              background-color: #ffffff;
              font-size: 11px;
              color: #000000;
              margin-top: 0;
              margin-left: 0;
              padding:0;
            }
            p, ul, ol, td {
              text-align: justify;
            }
            .orange {
              color: #ff6600;
              background-color: transparent;
              font-weight: bold;
            -->
        </style>
        </head>
        <body>
                
                <center>
                        <h1>INITIATION : INFO DE BASE</h1>                     
                </center>              
        <?php
            $quizz= array(
                array("<u>Question 1</u> : Quel dossier de votre Bureau ne peut pas être effacé ?","Poste de Travail","Corbeille","Mes Documents","Favoris Réseau","2","<b><u>Commentaire</u></b> : La corbeille est le seul dossier du Bureau qui ne peut pas être effacé ni même renommé."),
                array("<u>Question 2</u> : Quel est le meilleur OS ?","Windows","Linux","Mac","Chrome OS","2","<b><u>Commentaire</u></b> : Linux est de loin le meilleur OS, le Pingouin gagne toujours devant Apple et Windows. Quant à Chrome OS, il n'est pas encore ouvert grand public."),
            );
            include("infodebasecorrection.php");
            ?>
        </body>
</html>
infodebasecorrection.php
<script type="text/javascript">
                        function controle(form1)
                        {
                                var nom         = document.form1.nom.value;
                                var prenom      = document.form1.prenom.value;

                                if(( form1.nom.value == "") || ( form1.prenom.value == ""))
                                {
                                alert('Veuillez rentrer votre NOM ET PRENOM !!!');
                                }
                        else
                        {
                                        alert("Bonjour " + nom + " " + prenom + ". " + "Vous avez choisis l'initiation Info De Base"   );
                        }
                }
				function _closeWindow() {
 window.open('','_parent','');
  window.close();
  
}
                </script>
    <?php
	 
	error_reporting(E_ALL ^ E_NOTICE);
        if (!isset($_POST['result']))
        {
		 print "<input onclick='history.go(-1)'  type='image' name='image' value='Retour' src='bouton-retour.gif' /></center><br><br>\n";
            print "<form id=\"form1\" action=\"{$_SERVER['PHP_SELF']}\" method='post'>\n";
            print '<label> <b>Nom :</b>   <input type=text name="nom"></label>';
                        print '<label>  <b>Prénom :</b> <input type=text name="prenom"></label><br><br /><hr>';
           
            for ($i=0; $i<count($quizz); $i++)
            {
                print '<blockquote><span class="orange">';
                print "\t".$quizz[$i][0]."\n";
                print '</span><br /><br />';
               
                for ($j=1; $j<count($quizz[$i])-2; $j++) 
                {
                    $quest=$quizz[$i][$j];
                       print "<input type='radio' name=\"$i\" checked='checked' value=\"$j\" /> $quest<br />\n ";
                }
               
                print "</blockquote><hr />";
            }
           
            print "<input type='hidden' name='result' value='voir' /><br />\n<center>";
            print "<input onclick='controle(form1)'  type='image' src='a.gif' style='background-color:#f66' onmouseover=\"this.style.color='#fff'\" onmouseout=\"this.style.color='#000'\" onmousedown=\"this.style.color='#f90'\" value='VALIDER' /></center></form>\n";
            print "</form>";
        }
         else
         {
            print '<h4 align="center">INITIATION INFO DE BASE : CORRECTION</h4><br /><hr>';
            $points=0;
           
            for($i=0; $i<count($quizz); $i++ )
            { 
                $reponse = trim($_POST[$i]);
                print  '<blockquote><span class="orange">';
                print "\t".$quizz[$i][0]."</span><br /><br />\n";
               
                $numero_bonne=$quizz[$i][count($quizz[$i])-2]; // avant dernière valeur du tableau
                $bonne=$quizz[$i][$numero_bonne]; // Bonne réponse
               
                if ($reponse==$numero_bonne)
                {
                    print "<b><u>Réponse</u></b> : Votre réponse <b><i>".$bonne."</i></b> est exacte.";
                    $points++;
                }
                else
                {
                    print "<b><u>Réponse</u></b> : La bonne réponse est <b>".$bonne."</b> mais vous ";
                    if ($reponse=="")
                    {
                       print "n'avez rien répondu.";
                    }
                    else
                    {
                        print 'avez répondu " <b>'.$quizz[$i][$reponse].' "</b>.';
                    }
                }                
               
                $commentaire=$quizz[$i][count($quizz[$i])-1]; // dernière valeur du tableau
               
                print "<br />".$commentaire."<br />\n";      
                print "</blockquote><hr />\n";
            }
             
            if($points==count($quizz))
            {
                print"<br /><h1 align='center'>Félicitations Toutes vos réponses sont correctes!</h1>\n";
				print "<center><input onclick='_closeWindow()'  type='image' src='quitter.gif'  value='Quitter'  /></center></form>\n";
            print "</form>";
            }
            else
            {
                print "<br /><h1 align='center'>Vous avez la note de $points";
				
                if ($points>1) print "s";
                print " sur ".count($quizz)."</h1>\n";
				print "<center><input onclick='_closeWindow()'  type='image' src='quitter.gif'  value='Quitter' /></center></form>\n";
            print "</form>";
				
            }
           
             $nom = $_POST['nom'];
        $prenom = $_POST['prenom'];

     $headers ='From: "cyber quizz"<[email protected]>'."\n";
     $headers .='Reply-To: [email protected]'."\n";
     $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';
     $mail = mail('[email protected]', 'note du quizz [Info De Base]', "$nom  $prenom  a obtenu la note de $points", $headers);
     
    }
    ?>

Mammouth du PHP | 661 Messages

04 juin 2010, 23:25

et pourquoi ne pas faire la vérif en php, si tu n'est pas alaise avec JS, tu peux tout a fait vérifier de prim' abord les valeurs de nom et prenom, puis en cas d'erreur (non rempli ou non-conforme) tu lui ré-affiche le formulaire sans les réponses !...mais avec un message !... bien évidemment dans ce cas, tu n'envoie pas le mail non plus ^^

ioop
Invité n'ayant pas de compte PHPfrance

05 juin 2010, 00:21

ba en fait je veux que la personne clique sur le bouton valider. si le champ non n'est pas rempli on affiche un messager veuillez remplir le champ non (idem pour prenom) et enfin si les deux champs sont remplis, la personne appuie sur valider et le mail s'envoi et on affiche la page de correction.

Si quelqu'un peut m'aider à faire sa dans mon code peut importe la manière du moment que cela fonctionne :)

Merci d'avance pour votre aide

Eléphant du PHP | 398 Messages

07 juin 2010, 16:01

Tu peux appeler ta fonction JS au moment de la soumission du formulaire de cette façon :

Code : Tout sélectionner

<form action="tapage.php" method="post" onsubmit="return controle(form1)" id="form1" action="{$_SERVER['PHP_SELF']}" >
Et dans ta fonction, si ce que tu veux est verifié, tu indique return true, sinon, return false. Si les conditions ne sont pas vérifiées, la soumission du formulaire ne se fera pas :)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe