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 :

[PHP-JS] Vérification d'un champs de type liste de choix


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut [PHP-JS] Vérification d'un champs de type liste de choix
    Bonjour à toutes et tous,

    Débutant en PHP, je suis confronté à un problème : je n'arrive pas à vérifier si un utilisateur a sélectionné quelquechose ou non dans une liste de choix de mon formulaire. J'ai sans doute fais des erreurs dans mon code, mais je piétine depuis 2 jours . Et donc je cherche une bonne âme pour me donner un coup de pouce

    Voici le code dans mon formulaire (fichier TPL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <input type="text" name="subject"  maxlength="70" tabindex="1" 
    class="post" value="{SUBJECT}" />
     
    <textarea name="message" rows="15"  wrap="virtual" tabindex="2"
    class="post" onselect="storeCaret(this);" onclick="storeCaret(this);" 
    onkeyup="storeCaret(this);" id="message">{MESSAGE}</textarea>
     
    <td class="row1">{SELECT_CIBLE}</td>
    Dans posting.php :
    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
     
    $selection_cible = '<option selected>Sélectionnez la ou les région(s) cible(s)</option>';
    			$select_cible = '<select name="cible[]" multiple="multiple" size="6" tabindex="4">';
     
    			$sql = "SELECT * 
    					FROM " . CIBLES_TABLE . "
    					WHERE cible_id <> 1
    					ORDER BY cible_id ASC";
     
    			$select_cible .= $selection_cible;
     
    			while( $row = $db->sql_fetchrow($result) )
    			{
    				$select_cible .= '<option value="' . $row['cible_lettre'] . '">' . str_replace("\'", "'", $row['cible_nom']) . '</option>';
    			}
     
    			$select_cible .= '</select>';	
     
    		$template->assign_vars(array(
    			'TOPIC_TITLE' => $preview_subject,
    			'POST_SUBJECT' => $preview_subject,
    			'SELECT_CIBLE' => $select_cible,					);
    Et voilà enfin la fonction checkForm (la vérification fonctionne parfaitement pour les champs subject et message, mais pas pour cible) :
    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
    function checkForm() {
        formErrors = false;    
        if (document.post.subject.value.length < 1) {
            formErrors = "Veuillez saisir un titre";
        } else if (document.post.message.value.length < 10) { 
            formErrors = "Veuillez saisir un message plus long";
        } else if (document.post.cible.value == "") { 
            formErrors = "Veuillez sélectionner une cible géographique";
        }
        if (formErrors) {
            alert(formErrors);
            return false;
        } else {
            return true;
        }
    }
    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 348
    Points : 1 292
    Points
    1 292
    Par défaut
    Salut,
    j'ai pas testé mais tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else if (document.post.cible.checked == false)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci de ton aide Julien, mais ça ne marche pas mieux :

    pas d'alerte avec (document.post.cible.checked == false), ni avec == true d'ailleurs

  4. #4
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 348
    Points : 1 292
    Points
    1 292
    Par défaut
    oups j'avais mal lu, il ne s'agit pas d'une checkbox, donc ça risquait pas de marcher...

    Par contre, concernant ton souci, tu déclares cible comme un tableu :
    donc, il doit falloir faire une boucle pour tester les entrées de ton tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.post.cible[0].value == ""

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    toujours pas... je dois dois m'etre planté encore ailleurs
    Finalement je crois que ça serait plus rapide de mettre un choix par défaut au lieu du libellé "Sélectionner..."
    Sais tu comment je dois faire ?

  6. #6
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 348
    Points : 1 292
    Points
    1 292
    Par défaut
    je crois qu'on s'approche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript">
    function checkForm(){
    	alert(document.forms.f.cible.options[0].value);
    }
    </script>
     
    <form name="f" action="" method="post">
    <select name="cible" multiple="multiple" size="6" tabindex="4">
    <option value="1">AAAA</option>
    <option value="2">BBBB</option>
    <option value="3">CCCC</option>
    </select>
    <input type="button" onclick="checkForm();" />
    </form>
    ceci fonctionne

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup ! Grâce à ton aide j'avance.

    Maintenant ma fonction marche avec les 2 bouts de code suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    else if (document.forms.post.cible.value == "") { 
     
            formErrors = "Veuillez sélectionner une cible géographique";
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name="cible" multiple="multiple" size="6" tabindex="4">
    <option value="1">AAAA</option>
    <option value="2">BBBB</option>
    <option value="3">CCCC</option>
    </select>
    Mais pas avec ma variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="gen"><b>{CIBLE}</b></span><br />
    avec dans posting.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $selection_cible = '<option selected value="0">Sélectionnez la ou les région(s) cible(s)</option>';
    ...

  8. #8
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 348
    Points : 1 292
    Points
    1 292
    Par défaut
    As-tu un message d'erreur?

    Est-ce que ça marche en utilisant le tableaux options de cible?
    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var i;
    var hasOption = false;
    for (i=0;i<document.forms.f.cible.options.length;i++){
           if (document.forms.f.cible.options[i].value != "")
                   hasOption = true;
    }
    if (!hasOption)
          formErrors = "Veuillez sélectionner une cible géographique";
    Fait voir le code html de ton select qui est généré par ta page php.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Voilà le code généré par posting.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <select name="cible[]" multiple="multiple" size="6" tabindex="4">
    <option selected value="0">Sélectionnez la ou les région(s) cible(s)</option>
    <option value="a">France entière</option>
    <option value="b">Ile-de-France</option>
    <option value="c">Nord-Pas-de-Calais / Picardie</option>
    <option value="d">Alsace / Lorraine / Champagne-Ardenne</option>
    <option value="e">Bourgogne / Franche-Comté</option>
    </select>

  10. #10
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : décembre 2005
    Messages : 1 348
    Points : 1 292
    Points
    1 292
    Par défaut
    bon en fait, c'est plus simple que ça.

    ton test javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (document.forms.f.cible.value == "0")
         formErrors = "Veuillez sélectionner une cible géographique";
    enlève les [] derrière cible dans ton html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="cible" multiple="multiple" size="6" tabindex="4">
    qu'est ce que ça donne?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Effectivement ça marche maintenant
    Je te remercie vivement pour tes conseils !

    Voici le code final de la fonction :
    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
    function checkForm() {
        formErrors = false;    
    	if (document.post.subject.value.length < 1) {
            formErrors = "Veuillez saisir un titre";
        } else if (document.post.message.value.length < 10) { 
            formErrors = "Veuillez saisir un message plus long";
        } else if (document.post.cible.value == "" ) { 
            formErrors = "Veuillez sélectionner une cible géographique";
        }
        if (formErrors) {
            alert(formErrors);
            return false;
        } else {
            return true;
        }
    }
    et dans le TPL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <select name="cible" size="6" tabindex="4">
    <option value="a">France entière</option>
    <option value="b" selected="selected">Ile-de-France</option>
    <option value="c">Nord-Pas-de-Calais / Picardie</option>
    <option value="d">Alsace / Lorraine / Champagne-Ardenne</option>
    <option value="e">Bourgogne / Franche-Comté</option>
    <option value="f">Rhône-Alpes / Auvergne</option>
    <option value="g">Provence-Alpes-Côte d'Azur / Languedoc-Roussillon</option></select>
    J'ai finalement supprimé l'option selected, qui posait problème lors des retours en arrière dans le navigateur.

    Encore merci!

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

Discussions similaires

  1. [AC-2010] Lier champs de type liste déroulante dans table
    Par py86acces dans le forum Access
    Réponses: 10
    Dernier message: 20/01/2015, 21h55
  2. Enregistrer le contenu d'un champ de type Liste
    Par m.mostafa dans le forum HyperFileSQL
    Réponses: 0
    Dernier message: 28/01/2013, 16h23
  3. Réponses: 6
    Dernier message: 01/06/2010, 10h44
  4. Stocker un champ de type list
    Par krolis dans le forum Développement
    Réponses: 2
    Dernier message: 13/05/2010, 12h22
  5. Réponses: 5
    Dernier message: 09/05/2006, 15h57

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