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

AJAX Discussion :

Un seul élément dans mon SELECT


Sujet :

AJAX

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut Un seul élément dans mon SELECT
    Bonjour,
    J'ai un SELECT qui utilise une fonction AJAX et qui fonctionne sans problème.
    Mon seul soucis : Si j'ai un seul élément dans mon SELECT, je ne peux pas lancer l'AJAX car il se déclenche lorsque je sélectionne un élément de la liste. Mais comme là il est présent en 1er...l'AJAX se ne déclenche pas.
    Ce qui me cause aussi le soucis que quand j'ai une liste pleine, si l'utilisateur veut sélectionner le premier élément de la liste, il doit sélectionner un autre élément puis ensuite sélectionner ce 1er élément de la liste.
    Vous me suivez? Ci-dessous mon select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                            <select class="form-control col-lg-3" onchange="devis(this.value)">
                                <?php $client = $bdd->query('SELECT DISTINCT article_devis FROM article, devis, client WHERE article_devis = devis_id AND client_contact = "'.$_SESSION['Contact_id'].'" AND devis_client = "'.$varsociete.'" ORDER BY `article_devis` ASC');
                                while ($data = $client->fetch()) { ?>
                                    <option value=" <?php echo $data['article_devis']; ?>"> <?php echo $data['article_devis']; ?></option>
                                <?php } $client->closeCursor(); ?>
                            </select>
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Salut,
    tout d’abord permets-moi de modifier légèrement ton code PHP :
    Code PHP : 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
    <select class="form-control col-lg-3" onchange="devis(this.value)">
        <?php
        $client = $bdd->prepare('SELECT DISTINCT article_devis
            FROM article, devis, client
            WHERE
                    article_devis  = devis_id
                AND client_contact = :client_contact
                AND devis_client   = :devis_client
            ORDER BY article_devis ASC');
        $client->execute([
            ':client_contact' => $_SESSION['Contact_id'],
            ':devis_client'   => $varsociete
        ]);
        while ($data = $client->fetch(PDO::FETCH_ASSOC)) {
            echo "<option value=\"{$data['article_devis'];}\">
                {$data['article_devis'];}
            </option>";
     
        }
        $client->closeCursor();
        ?>
    </select>
    J’ai rajouté prepare() parce que c’est un bon réflexe à adopter, même quand les données sont a priori sûres, ainsi que FETCH_ASSOC car le mode de fetch par défaut est FETCH_BOTH qui utilise deux fois plus de mémoire dans le processus PHP. Pour le reste, ce n’est qu’une histoire de syntaxe, j’ai réduit le nombre de commutateurs <?, ?> qui, à mon avis, rendent le code moins lisible.

    Pour la question de la sélection d’options, il faudrait que tu écoutes à la fois les évènements "change" et "click". Mais le problème c’est que ça risque de lancer plusieurs appels ajax à la fois. On va devoir écrire un peu de JavaScript supplémentaire, mais pour ça je vais avoir besoin que tu me montres le code de ta fonction devis(). J’attends ta réponse
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    il est communément admis que dans un <select> la première option est neutre justement pour permettre une action sur l'événement « change », si besoin.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select onchange="devis(this.value)">
      <option>Faites votre choix
      <option value="1">Option #1
      <option value="2">Option #2
    </select>

  4. #4
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci beaucoup pour vos 2 réponses.
    @Watilin pour le prepare je vais y penser, merci pour tes explications et tes conseils, tu as raison je devrai me tourner vers des prepare pour traiter mes requêtes à l'avenir.
    @NoSmoking Je me sens bête, en effet j'ai créé un option vide juste avant mon While qui me charge mes options, et cela fonctionne à merveille.

    Merci à tous les 2, sujet résolu!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2014, 11h33
  2. Réponses: 6
    Dernier message: 17/03/2011, 23h27
  3. [Zend_Form] <select> - Ajax - MVC
    Par MaitrePylos dans le forum Zend_Form
    Réponses: 9
    Dernier message: 03/06/2008, 17h01
  4. Comment affecter un array à un element select
    Par ouioui2000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/01/2006, 12h26
  5. [VB.NET] Error: There can be only one 'page' directive
    Par Redouane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/11/2004, 19h16

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