IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment vérifier le formulaire [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Comment vérifier le formulaire
    Bonsoir tout le monde,

    J'ai un formulaire qui ressemble à ceci :

    Groupe 1 :
    Question 1 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5

    Une réponse peut donc être 1_1_2 (pour la réponse 2)

    Question 2 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5

    Une réponse peut être 1_2_1 (pour la réponse 1)

    Question 3 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5

    ...

    Groupe 2 :
    Question 1 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5

    Une réponse peut être 2_1_4 (pour la réponse 4)

    Question 2 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5

    Une réponse peut être 2_2_3 (pour la réponse 3)

    Question 3 : réponse 1 réponse 2 réponse 3 réponse 4 réponse 5
    ...
    J'ai donc une table qui reprend ces combinaisons dès qu'un bouton radio du formulaire a été cliqué.

    J'ai 9 groupes, j'ai donc une première boucle de 1 à 9 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for($i=1; $i<=9;$i++)
    		{
    Dans chaque groupe, j'ai n questions, comme je ne sais pas à l'avance combien, je compte le nombre de questions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql_COMPTE = "SELECT COUNT(ID) as COMPTE from noms_rubriques WHERE ID_fieldset  = " .$i;
    $query_COMPTE = mysql_query($sql_COMPTE);
    $res = mysql_fetch_array($query_COMPTE);
    Gràce à ça, je peux créer ma seconde boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($j=1;$j<=$res['COMPTE'];$j++)
    			{
    Je vérifie si la combinaison numéro du groupe et numéro de la question est présente dans ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT Present_ou_pas from cotations WHERE Present_ou_pas = '".$i."_".$j."' AND Matricule = '".$_POST['matricule']."'";
    Donc, si au moins une réponse dans une ligne (question) a été répondue, je dois considérer la ligne comme répondue et passer à la suivante.

    Je coince.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
     
    		include('../connexion.php');
    		include('../Fonctions/Nom_fieldset_rubrique.php');
     
    		for($i=1; $i<=9;$i++)
    		{
    			$nombre = 0;
    			$sql_COMPTE = "SELECT COUNT(ID) as COMPTE from noms_rubriques WHERE ID_fieldset  = " .$i;
    			$query_COMPTE = mysql_query($sql_COMPTE);
     
    			$res = mysql_fetch_array($query_COMPTE);
    			for($j=1;$j<=$res['COMPTE'];$j++)
    			{
    				$sql = "SELECT Present_ou_pas from cotations WHERE Present_ou_pas = '".$i."_".$j."' AND Matricule = '".$_POST['matricule']."'";
    				$mysql_sql = mysql_query($sql);
    				$nombre = mysql_num_rows($mysql_sql);
     
    				//si j'ai trouvé au moins un bouton radio dans la rubrique (par exemple "Assiduité et ponctualité" alors je sais qu'une cote a été attribuée à cette ligne, je peux passer à la suivante
    				if($nombre > 0)
    				{
    					$position_manquante.= Nom_fieldset_rubrique($i."_".$j);
    					break;					
    				}
    			}
     
    		}
     
    		//$position_manquante.= Nom_fieldset_rubrique($i."_".$j);
     
    		$retour = "COTE(S) MANQUANTE(S) :";
    		$retour.= "\n".$position_manquante;
    		echo $retour;
    		//echo $sql;
    Voici le code de la fonction Nom_fieldset_rubrique qui permet de retourner le nom du groupe et de la question qui n'a pas été répondue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
    	// cette fonction informe l'utilisateur les points qu'il n'a pas remplis (bouton radio) en renvoyant le nom du fieldset et le nom de la rubrique
    	function Nom_fieldset_rubrique($reference)
    	{
    		$tab_ref = explode("_",$reference);
     
    		$fieldset = "SELECT nom_Fieldset FROM noms_fieldset WHERE ID = ".$tab_ref[0];
    		$query_fieldset = mysql_query($fieldset);
    		$res_fieldset = mysql_fetch_array($query_fieldset);
     
    		$rubrique = "SELECT nom_rubrique FROM noms_rubriques WHERE ID = ".$tab_ref[1];
    		$query_rubrique = mysql_query($rubrique);
    		$res_rubrique = mysql_fetch_array($query_rubrique);
     
    		return $res_fieldset['nom_Fieldset'].' => ' . $res_rubrique['nom_rubrique'];
     
    	}
    ?>
    Je remercie la personne qui aura le courage de lire ceci et aussi les autres.

    Bonne soirée.

    beegees

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je pense qu'il faut revoir un peu tout.

    Avoir dans une table plusieurs données dans un seul champ est une vilaine erreur, ça t'empeche de filtrer efficacement tes lignes.
    Ton repère pour identifier une question, ca doit être son id.
    Tu fais ton tirage de questions et de réponses en fonction des critères que tu veux : a partir de la tu sais que tu attends une réponse à question d'id 126,456, 208, 548 par exemple.

    Du coup tu n'as pas besoin de compter les lignes.
    Pour synthetiser, les questions du groupe 3 sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT question FROM table WHERE groupe = 3";
    $result = mysql_query($sql);
    while ($row=mysql_fetch_array($result)) {
         echo $row['question'] . '<br/>';
    }

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonsoir Sabotage,

    Merci pour ta réponse.

    Après plusieurs heures de chipotage (et non de sabotage ) j'ai finalement suivi ton conseil.

    J'avais heureusement une table avec l'ID de chaque groupe et l'ID de chaque question, ce qui m'a permis de résoudre mon problème.

    Merci pour ton aide très apréciée.

    beegees

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/11/2013, 21h36
  2. Réponses: 5
    Dernier message: 12/10/2012, 13h38
  3. Réponses: 4
    Dernier message: 06/01/2010, 20h58
  4. Comment vérifier une URL saisie dans mon formulaire ?
    Par cdevl32 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 28/10/2007, 18h32
  5. comment vérifier l'envoi d'un formulaire ?
    Par JOS.FRAN dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/07/2007, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo