Partage
  • Partager sur Facebook
  • Partager sur Twitter

Listbox Ajax

Listebox et soucis While

Sujet résolu
Anonyme
    11 juillet 2018 à 12:04:44

    Bonjour,

    Je voudrai que ma liste ajax me charge une fiche client par rapport au client que j'ai choisis dans cette liste.

    Or, choisir un client dans cette liste me génère toutes les listes clients de tous les clients.

    mon appel "q" ajax:

    <script>
    function showUser(str) {
        if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
        } else {
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("txtHint").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET","getuser.php?q="+str,true);
            xmlhttp.send();
        }
    }
    </script>
    
    <div class="form-group mx-sm-3 mb-2">
                      <label for="title">Sélectionnez votre client:</label>
                      <select name="client_societe" id="client_societe" class="form-control mx-sm-3 mb-2" onchange="showUser(this.value)">
                        <?php $client = $bdd->query('SELECT DISTINCT client_societe FROM client ORDER BY `client_societe` ASC');
                         while ($data = $client->fetch()) { ?>
                                <option value=" <?php echo $data['client_societe']; ?>"> <?php echo $data['client_societe']; ?></option>
                        <?php } $client->closeCursor(); ?>
                        </select>
                    </div> <br />
    		<img src="../Assets/cont.jpg" class="img-rounded" alt="head">
        </center>
    </div>
    
    <div id="txtHint"><b>La liste définie va être chargée ici une fois votre choix fait.</b></div>
    

    le fichier appelé:

        $requete = "SELECT * FROM client WHERE UPPER(client_societe) = :client_societe";
        $stmt = $bdd->prepare($requete);
        $stmt->bindValue('client_societe',trim(strtoupper($_GET['q'])),PDO::PARAM_INT);
        $stmt->execute();
    
        while( $donnees = $stmt->fetch() ) { ?>
    
      <div class="pull-left">
          <table class="table table-bordered table-striped table-condensed">
                <thead> <!-- En-tête du tableau -->
                    <tr>
                        <th>Préfixe</th>
                        <th>Nom du client</th>
                    </tr>
                </thead>
                <tbody> <!-- Corps du tableau -->
                    <tr>
                        <td><input type="text" name="adresse" id="client_societe" value="<?php echo $donnees['client_societe'] ?>" class="form-control" /></td>
                    </tr>
     <?php } $stmt->closeCursor(); ?>
    

    le résultat en image:

    Merci d'avance, vous me sauveriez la vie.




    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2018 à 20:02:46

      Bonjour,

      Apparemment tu envoies le nom au lieu de l'id. Ca ne colle pas avec le bind sur un INT.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        12 juillet 2018 à 0:51:09

        Merci pour ta réponse,

        seulement je ne comprends pas bien: je fais une recherche en fonction du nom, pas de l'id. Il faut que je SELECT mon nom, non?

        Si tu pouvais me préciser un tout petit peu cela je pense que j'y arriverai :) merci

        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2018 à 9:16:10

          Et bien tu as mis PDO::PARAM_INT dans ton bind de valeur, ce qui veut dire que la valeur envoyée à la requête est un entier.

          Il faudrait remplacer par PDO::PARAM_STR pour envoyer un nom (donc une chaîne de caractère).

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 juillet 2018 à 13:00:32

            En effet je n'avais pas vu, merci infiniment!
            • Partager sur Facebook
            • Partager sur Twitter

            Listbox Ajax

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown