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

JavaScript Discussion :

Contrôle de formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut Contrôle de formulaire
    Bonjour,

    L'intitulé de mon post est un grand classique je crois. Pourtant, après avoir épluché de nombreux forums, je n'ai pas trouvé de solution à mon problème.

    Mon problème est donc très simple. Je soumets un formulaire à un internaute, mais avant de l'envoyer vers ma BDD SQL, je veux vérifier si au moins une réponse à été cochée. J'ai effectué jusqu'ici ce contrôle en PHP. Ça fonctionne mais le code est lourd, lent et maladroit (je suis obligé de transmettre le formulaire avant de pouvoir effectuer la moindre vérification). Le Javascript s'impose ici à mon sens.

    Dans mes réponses, j'ai plusieurs types d'entités : des checkboxes, des boutons radios ou encore des champs de texte. A chaque fois qu'une réponse est cochée, son indice est placé dans "reponse[]", une variable de type array. Pour plus de clarté, voici le bout de code en question :

    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
    35
    36
    37
    38
    
    <form action="sondage.php" method="post" name="formulaire"
    onsubmit="return verifier()">
    
    [...]
    
    
    // Bouclage sur le choix des réponses
    while ($j <= $nb_reponses_array['r']+$i*100)
    {
    			
    	// On va chercher le choix et son type dans une BDD
    	$reponse = mysql_query("SELECT r, q_type FROM FQ59_qr WHERE num = '$j'");
    	$reponse_array = mysql_fetch_array($reponse);
    			
    	// Bouton radio
    	if($reponse_array['q_type'] == 'radio')
    	{
    		echo '<input type="radio" name="reponse[]" value="'.$j.'">';
    		echo ' '.$reponse_array['r'].'<br />';
    	}
    			
    	// Champ de caractères
    	else if($reponse_array['q_type'] == 'champ')
    	{
    		echo $reponse_array['r'].' '.'<input type="text" name="reponse[]">'.'<br />';
    	}
    			
    	// Checkbox		
    	else
    	{
    		echo '<input type="checkbox" name="reponse[]" value="'.$j.'">';
    		echo ' '.$reponse_array['r'].'<br />';
    	}			
    
    	$j++;
    }


    Et voici la fonction Javascript :

    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
     
     <SCRIPT language="Javascript">
     
    <!--
    function verifier()
    {
    	if ( document.forumlaire.reponse.value == "" )
    	{
    		alert("Vous devez choisir au moins une réponse");
    		return false;
    	}
    	else
    	{
    		return true;
    	}
    }
     
    // -->
    </SCRIPT>
    Ce code a pour effet le passage à la question suivante même si aucune réponse n'est donnée. Je crois que le problème a lieu au moment d'aller récupérer le contenu de reponse .

    J'espère que ce post est assez clair. Je peux vous fournir toute information complémentaire si vous en avez besoin.

    Bonne journée à toutes et à tous !


    pinbeu

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'espère que ce post est assez clair.
    Il l'aurair été plus si tu avais mis le code html généré plutôt que le PHP
    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( document.forumlaire.reponse.value == "" )
    A priori, tu as plusieurs champs réponses et tu leur mets des value par défaut, donc tu auras du mal à obtenir ton message d'erreur.
    Ensuite, si tu veux vérifier des checkboxes ou des cases à cocher, il est préférable de tester la propriété checked de chacun d'eux.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    fais une recherche avec "au moins une coché" ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Merci pour la rapidité de ta réponse.

    Pour ma première question, voici ce que génère mon code :



    J'espère que c'est ça que tu attendais.

    Oui c'est vrai que quelque soit la page générée, reponse aura une valeur. Mais afin de tester la validité de ma fonction JS, j'ai aussi inséré un alert("OK") dans le else, et rien n'apparait non plus.

    Et enfin, concrètement, comment dois-je construire ma boucle pour vérifier le contenu de chaque reponse ? (je me suis lancé dans le JS il y a quelque jour, je ne suis pas familier avec la transmission des variables PHP <-> JS)



    EDIT :

    @ SpaceFrog

    J'ai déjà effectué plusieurs fois ce type de recherche, j'ai testé des morceaux de code qui fonctionnaient effectivement. C'était une boucle sur chaque checkbox/bouton radio. Mais je n'arrive pas à l'adapter à mon code. Ces morceaux de code en question ne comportaient pas de PHP, juste du JS/Html.

    Si j'arrivais à transmettre ma variable PHP dans ma fonction JS je pense que je pourrais m'en tirer. J'ai lu aussi des posts sur la transmission de variable mais pareil, je n'ai pas réussi à l'adapter à mon code.

    Là dans l'immédiat, je voudrais que la fonction JS s'exécute. Avec un alert dans le ifet le else, je dois, dans tous les cas, avoir un message à l'écran. Mais ce n'est pas le cas.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'espère que c'est ça que tu attendais.
    Non, pas tout à fait...
    Ce que j'attend, c'est plutôt le code html généré (code source de la page affichée).
    je ne suis pas familier avec la transmission des variables PHP <-> JS
    PHP étant un langage coté serveur et javascript coté client, il n'y a pas de transmission de variables entre l'un et l'autre, pour échanger des données, il faut passer par l'url, donc uniquement valable pour des données au format chaine.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( document.forumlaire.reponse.value == "" )
    une faute de frappe ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Ah, le code source ^^ Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form action="sondage.php" method="post" name="formulaire" onsubmit="return verifier()">
    	<div id="question">
    	<input type="hidden" name="i" value="1"><p>1. Vous êtes :</p></div>
    <div id="reponse"><input type="radio" name="reponse[]" value="101"> Un homme<br /><input type="radio" name="reponse[]" value="102"> Une femme<br /></div>
     
     
     
        <div id="valider">
        <input type="image" src="images/valider.png" alt="ok"/>
    	</div>
    	</form>
    Au passage j'ai modifié la fonction JS pour cette réponse en particulier :

    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
     
     
        <SCRIPT language="Javascript">
     
    	<!--
    	function verifier()
    	{
    		if ( (document.forumlaire.reponse.value != 101) &&  (document.forumlaire.reponse.value != 102))
    		{
    			alert("Vous devez choisir au moins une réponse");
    			return false;
    		}
    		else
    		{
    			alert("OK");
    			return true;
    		}
    	}
     
    	// -->
    	</SCRIPT>

    Effectivement c'est plus clair ^^. En tout cas, merci déjà pour votre réactivité.



    EDIT :
    @ Bovino

    Oulah oui, c'est un peu bête ça. Malheureusement après correction, ça ne change rien. Pas d'affichage à l'écran.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    c'est comme moi avec le mot dasn (dans)

    y'a du forumlaire partout ... c'est normal


    sinon pour les codes qui bouclent sur les objets, oui c'est la seule façon en javascript ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('reponse[]')
    sera la collection à scanner .
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [PHP-JS] Classe de contrôle de formulaire
    Par MV1908 dans le forum Langage
    Réponses: 4
    Dernier message: 10/10/2006, 00h01
  2. Réponses: 1
    Dernier message: 21/07/2006, 05h56
  3. Les contrôles de formulaire, quel test optimal ?
    Par GTJuanpablo dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2006, 10h00
  4. accéder à un contrôle de formulaire avec un nom de tableau
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/06/2005, 23h57
  5. [JSP] [STRUTS] Contrôle de formulaire
    Par babylone7 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/07/2004, 17h51

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