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 :

[Système] fonction envoie selected à chaque fois on choisi une valeur


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut [Système] fonction envoie selected à chaque fois on choisi une valeur
    bonjour,

    En fait, j'ai 2 listes déroulantes, je choisis une valeur de la 1er et je fais une requete mysql avec la valeur choisie pour remplir la 2ieme liste,
    J'ai recupere une fonction de l'internet pour selectionner ce que j'ai choisi dans la 1er liste mais le probleme que si maintenant je choisis Plusieurs valeurs (multiple) cette fonction ne marche plus et j'arrive pas à l'ameliorer car je voudrais voir tjs les valeurs choisis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function choixParDefaut($couleur) // Création de la fonction
    {
    $par_defaut = ''; // On crée une variable (vide par défaut) que l'on retournera à la fin
     
        if (isset($_POST['couleur'])) // Si le visiteur a choisi une couleur
        {
            if ($_POST['couleur'] == $couleur) // Si cette couleur correspond à la couleur que l'on est en train de traiter
            {
                $par_defaut='selected="selected"'; // Alors on modifie la variable que l'on retournera et on lui met selected
            }
        }
     
    return $par_defaut; // On ne retourne rien si ce n'était pas la couleur choisie, selected si c'était la bonne couleur
    }
    Merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Pour faire cela tu dois tout d'abord considérer ta variable $_POST["couleur"] non plus comme une string mais comme un tableau.

    imaginons un select multiple qui nous renvoie un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="couleur[]" multiple="multiple">
    <option value="rouge">rouge</option>
    <option value="vert">vert</option>
    <option value="bleu">bleu</option>
    </select>
    Maintenant lorsque je soumet mon formulaire je souhaite savoir si telle couleur est selectionnée, pour cela on vas modifier la fonciton que tu as fournies :

    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
    function ValeurEstContenu( $Tableau, $ValeurRecherchee)
    {
        if( is_array($Tableau) ) // On s'assure que c'est un tableau pour éviter les erreurs
        {
            foreach( $Tableau as $Clef=>$Valeur) // on vas parcourir le tableau
            {
                if( $Valeur == $ValeurRecherchee) //Si la valeur est trouvée on renvoie true
                {
                    return true;
                }
            }
        }
     
        return false; // Autrement la valeur n'est pas trouvée, on renvoie false
    }
    Il ne reste plus qu'à s'en servir :
    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
     
    <?
    // On s'assure de créer une variable de type tableau pour la fournir à la fonction
    $TabCouleur = array();
    // Si le tableau couleur est présent on l'attribut à notre variable de type tableau
    if( isset($_POST["couleur"] )
    {
        $TabCouleur = $_POST["couleur"];
    }
    ?>
    <? //Pour le reste on à plus qu'à appeler la fonction pour savoir si la valeur est contenu ?>
    <select name="couleur[]" multiple="multiple">
    <option value="rouge" <? if(ValeurEstContenu( $TabCouleur , "rouge")){ echo "selected"; } ?> >rouge</option>
    <option value="vert"<? if(ValeurEstContenu( $TabCouleur , "vert")){ echo "selected"; } ?>>vert</option>
    <option value="bleu"<? if(ValeurEstContenu( $TabCouleur , "bleu")){ echo "selected"; } ?>>bleu</option>
    </select>
    Tu remarqueras une chose c'est que j'ai complètement dissocier la fonction des valeurs utilisées. En effet ta fonction n'est pas portable dans un autre cas, la mienne si car elle est neutre, elle ne renvoie que true ou false.

    enfin voila,

    En esperant que cela t'inspires pour faire un peu plus que du C&C

    bbye

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 59
    Points
    59
    Par défaut
    Merci bcp, j ai une question pour clef=>$valeur , en general moi je mets $valeur sans lea clef, c'est quoi la difference??
    maintenant je voudrais ajouter dans ma liste une autre option, c'est toutes et dans ce cas la ,l'utilisateur peut choisir toutes au lieu de choisir ttes les couleurs et je voudrais quand je clique au dessus, que ca sera comme les autres ,c.a.d mettre selected à cote quand c'est choisi???
    et est-ce que possible d'eviter de choisir l'option toutes avec une autre option???
    Merci,

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Pour ton problème je verais plutot du javascript avec un bouton ou case a cocher en dessous de la liste qui permet de sélectionner tous. Sinon si tu le fait cote traitement regarde la fonction in_array() ou array_search()
    tu testes si tout est présent dans le résultat et si oui tu récupére toutes tes données, sans te soucier des autres choix.
    Tout énigme a une solution ! Tout est question de discipline !

Discussions similaires

  1. Ré exécuter une fonction dans une boucle à chaque fois
    Par kalimmba dans le forum Débuter
    Réponses: 13
    Dernier message: 23/03/2015, 20h21
  2. Réponses: 3
    Dernier message: 20/07/2013, 12h42
  3. Copier valeur choisie dans ComboBox dans cellule a chaque fois differente
    Par juliematlab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2013, 09h04
  4. decrementer selection chaque fois que macro est appelée
    Par joeyd dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/09/2007, 18h05
  5. SELECT plusieurs fois les mêmes champs
    Par aergil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2005, 12h10

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