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

jQuery Discussion :

Récupérer la valeur d'un SELECT


Sujet :

jQuery

  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 Récupérer la valeur d'un SELECT
    Bonjour,
    J'ai le système suivant:
    Code html : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
                  <td>
                    <select type="text" class="form-control scope article_ref" style="width: 100%;" onchange="Aaa(this.value)">
                      <option></option>
                      <?php $list = $bdd->query('SELECT * FROM produit WHERE produit_contact = "'.$_SESSION['Contact_id'].'" ORDER BY `produit_ref` ASC');
                      while ($data = $list->fetch()) { ?>
                      <option value="<?php echo $data['produit_ref']; ?>"><?php echo $data['produit_ref']; ?></option>
                      <?php } $list->closeCursor(); ?>
                    </select>
                  </td>
                  <div class="article_refarticle">
                  <td>
                  <?php $varname  = isset($_POST['value'])? $_POST['value']:'null'; ?>
                      <?php $list = $bdd->query('SELECT * FROM produit WHERE produit_ref = "'.$varname.'"');
                      $donnees = $list->fetch();
                      $list->closeCursor(); ?>
                      <input value="<?php echo $donnees['produit_nom'] ?>" />
                  </td>
                  </div>
                  <td><input type="text" class="form-control article_devis"></td>
                  <td><input type="text" class="form-control article_designationarticle"></td>
                  <td><input type="text" class="form-control article_pu"></td>
                  <td><input type="text" class="form-control article_unite"></td>
                  <td><input type="text" class="form-control article_quantite"></td>
                  <td><input type="text" class="form-control article_prixnetunite"></td>
                </tr>
              </tbody>
            </table>
            <div class="modal-footer">
              <button type="button" class="btn btn-secondary" data-dismiss="modal">Retour</button>
              <button id="bt_Envoi" class="btn btn-primary submit">Enregistrer le devis</button>
            </div>
          </div>
        </div>
      </div>
    </div>
     
    <script>
    function Aaa(value) {
      $.ajax({
        type: 'post',
        data: {value: value},
        success: function(response){
                                            $( ".article_refarticle" ).val(value);  
        }
      });
    }
    Comme vous le voyez, mon objectif est de récupérer la variable de mon select et de l'utiliser dans la requête SQL en dessous. (afin d'avoir le nom d'un article par rapport à la référence de l'article, tout simplement). Seulement pas de résultat, ma variable ne semble pas arriver au bout du tunnel. Regardez mon AJAX, je m'y prends peut-être mal? merci.

  2. #2
    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,
    Regardez mon AJAX, je m'y prends peut-être mal?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Aaa(value) {
      $.ajax({
        type: 'post',
        data: {value: value},
        success: function(response){
                                            $( ".article_refarticle" ).val(value);  
        }
      });
    }
    c'est presque du n'importe quoi ...
    as tu au moins lu la documentation officiel : jQuery.ajax() ?

  3. #3
    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
    Pardon
    Voici un code + clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Aaa(value) {
      $.ajax({
        type: 'post',
        data: {value: value}
      )} 
      .done(function( retour_html ) {
    		$(".article_refarticle").html( retour_html );
      })
    	.fail(function() {
    		alert( "error function Aaa()" );
      });

  4. #4
    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
    Je dirais qu’il manque le paramètre url. Examine la requête envoyée à l’aide de l’outil réseau (network) du panneau F12.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    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
    Citation Envoyé par Watilin
    Je dirais qu’il manque le paramètre url.
    Par défaut l'url est la page courante
    Citation Envoyé par doc jQuery
    url (default: The current page)
    Type: String
    A string containing the URL to which the request is sent.
    donc c'est plutôt un problème d'approche de ce qui se passe, car comme écrit
    Citation Envoyé par Zarkoffe
    Comme vous le voyez, mon objectif est de récupérer la variable de mon select et de l'utiliser dans la requête SQL en dessous.
    là il y a mélange des genres !

  6. #6
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    je n'ai jamais été fan des clef = variable

    Je trouve cela plus que moyen ...
    ou moins que pluyen ?
    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 !

  7. #7
    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 pour vos réponses à tous.
    J'ai clarifié mon code. Le POST passe bien (je le vois dans l'onglet Réseau de mon navigateur).
    Seulement je pense que c'est la manière dont je récupère ma variable qui est mauvaise. Une idée? (ligne 34 à 47)
    Code HTML : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
            <button id="add_article" class="btn btn-success">Ajouter un produit</button>
            <button id="del_article" class="btn btn-danger">Supprimer le(s) produit(s)</button>
            <table class="table table-bordered table-striped table-condensed">
              <thead>
                <tr>
                  <th width="2"></th>
                  <th width="80">Ref</th>
                  <th width="20">Ref Article</th>
                  <th width="20">Désign Article</th>
                  <th width="5">Unite</th>        
                  <th width="10">Prix Unitaire</th>
                  <th width="10">Quantité</th>
                  <th width="5">Prix Net Unité</th>
                  <th width="15">Total</th>
                </tr>
              </thead>
              <tbody id="table_article"> </tbody>
            </table>
            <!-- lignes ajoutés au tableau -->
            <table id="fantome" style="display:none"> 
              <tbody>
                <tr>
                  <td><input type="checkbox" name="chkbox[]"></td>
                  <td>
                    <select type="text" class="form-control scope article_ref" style="width: 100%;" onchange="ref_to_rearticle(this.value)">
                      <option></option>
                      <?php $list = $bdd->query('SELECT * FROM produit WHERE produit_contact = "'.$_SESSION['Contact_id'].'" ORDER BY `produit_ref` ASC');
                      while ($data = $list->fetch()) { ?>
                      <option value="<?php echo $data['produit_ref']; ?>"><?php echo $data['produit_ref']; ?></option>
                      <?php } $list->closeCursor(); ?>
                    </select>
                  </td>
                  <td>
                    <div id="article_refarticle">
                      <?php $article_ref  = isset($_POST['article_ref'])? $_POST['article_ref']:'null';
                      $requete = "SELECT * FROM produit WHERE produit_ref = $article_ref";
                      $requete = $bdd->prepare("SELECT * FROM produit WHERE produit_ref = $article_ref");
                      $stmt = $bdd->prepare($requete);
                      $stmt->bindValue('article_ref',strtoupper(($article_ref)),PDO::PARAM_STR);
                      $stmt->execute(); ?>
     
                      <?php while( $donnees = $stmt->fetch() ) { ?>
                      <input type="text" value="<?php echo $donnees['produit_nom'] ?>" />
                      <?php } ?>   
                    </div>
                  </td>
                  <td><input type="text" class="form-control article_devis"></td>
                  <td><input type="text" class="form-control article_designationarticle"></td>
                  <td><input type="text" class="form-control article_pu"></td>
                  <td><input type="text" class="form-control article_unite"></td>
                  <td><input type="text" class="form-control article_quantite"></td>
                  <td><input type="text" class="form-control article_prixnetunite"></td>
                </tr>
              </tbody>
            </table>
            <div class="modal-footer">
              <button type="button" class="btn btn-secondary" data-dismiss="modal">Retour</button>
              <button id="bt_Envoi" class="btn btn-primary submit">Enregistrer le devis</button>
            </div>
          </div>
        </div>
      </div>
    </div>
     
    <script>
    function ref_to_rearticle(name) {
      $.ajax({
                            method: "POST",
                            url: "modal_header/Actions/ajoutdevis.php",
          data: { article_ref: name }
                    })
                    .done(function( retour_html ) {
          $("#article_refarticle").html( retour_html );
                    })
                    .fail(function() {
                            alert( "error facture creation ajax" );
                    });     
    }
    </script>

    Mon problème est d'abord de bien récupérer ma variable dans ma requête SQL et d'afficher le bon "produit_nom" en fonction.
    Une fois que cela marchera, j'aurai besoin que ce soit affecté au BON input.
    En effet comme vous le voyez ligne 1, ce dernier ajoute une ligne à chaque fois que je clique dessus. L'objectif final est donc d'attribuer le bon select au bon INPUT.
    Là je pense que si mon AJAX "fonctionnerait", il changerait la variable la valeur de tous mes input. Et ce n'est pas le résultat final que je veux.

    Merci d'avance

  8. #8
    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
    Code html : 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
    <td>
            <div id="article_refarticle">
              <?php
              $article_ref = $_POST['article_ref'] ?? 'null';
              $requete = $bdd->prepare('
                  SELECT * FROM produit
                  WHERE produit_ref = :ref
              ');
              $stmt->bindValue(':ref', strtoupper($article_ref), PDO::PARAM_STR);
              $stmt->execute();
     
              while ($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) {
                  echo "<input type=\"text\" value=\"{$donnees['produit_nom']}\" />";
              }
              ?>
            </div>
          </td>
    Tu dois apprendre à bien utiliser les requêtes préparées. Les marqueurs doivent obligatoirement commencer par :.

    Ton ajax fonctionnera si ton script serveur ajoutdevis.php envoie juste le fragment de code HTML prévu pour être inséré dans la div #article_refarticle. Pour éviter de dupliquer du code, il peut être intéressant de servir une div #article_refarticle vide au départ, et d’appeler ajoutdevis.php via ajax dès que le DOM est prêt (dans la fonction $(document).ready()).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    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 pour ta réponse, en effet cette requête a + de sens que mon bazarre.
    Avec ce code, mon tableau bloque (je clique pour créer une ligne, et elle ne se fait pas). sans me mettre d'erreur, ni même dans la console du navigateur.
    Si je mets simplement la div tel que :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <td>
       <div id="article_refarticle">
       </div>
    </td>
    Les lignes s'ajoutent (mais la cellule est vide bien sûr).
    Donc le problème viendrait peut-être du fait que le javascript qui ajoute la ligne n'apprécie pas que l'on construise une requête dans l'une de ces cellules.
    Je continue à chercher de mon côté d'où vient le pb.
    Si cela peut t'aider, voici le code qui s'occupe de la création de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        $(document).ready(function()
        {
            var Table_noms_messages = document.getElementById('table_article');
     
              const TR_Base = document.querySelector('#fantome tbody tr');
     
              $('#add_article').click(function () {    // "Ajouter un produit"
                var new_tr_clone = TR_Base.cloneNode(true);
                Table_noms_messages.appendChild( new_tr_clone );
              });
        }
    merci d'avance

    EDIT: J'ai vérifié du côté de la requête et de la table produit en bdd, tout semble bien construit.

  10. #10
    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
    Citation Envoyé par Zarkoffe Voir le message
    […] que le javascript qui ajoute la ligne n'apprécie pas que l'on construise une requête dans l'une de ces cellules.
    JavaScript ne voit pas le code PHP. Fais Ctrl+U, tu verras ce qui arrive côté client. Le script PHP ne peut être interprété que sur le serveur. En résumé ça se passe comme ça :
    1. le serveur reçoit une requête HTTP avec une URL en .php ;
    2. il cherche le script PHP correspondant et le passe à son interpréteur PHP ;
    3. PHP produit du texte (du code HTML en l’occurence) ;
    4. le serveur envoie le texte produit via HTTP en réponse à la requête.

    Quand le navigateur reçoit la réponse, il détermine à partir du Content-Type que c’est du HTML, puis utilise ses différents interpréteurs (HTML, JS, CSS). Il n’y a pas de PHP côté client.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Comment récupérer la valeur de c select
    Par Tarba dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 30/06/2006, 15h52
  2. [JSP] Récupérer les valeurs d'un SELECT multiple
    Par ran_hery dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 15/05/2006, 15h56
  3. récupérer une valeur dans un selected
    Par lacfab dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 09h48
  4. Récupérer les valeurs d'un <select> multiple
    Par vg33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/10/2005, 11h38
  5. récupérer la valeur d'un select dans un autre
    Par alexander dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2005, 19h43

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