Autocomplete dans boucle généré par un résultat requête

Résolu
DonRuca Messages postés 2 Date d'inscription vendredi 9 novembre 2018 Statut Membre Dernière intervention 30 novembre 2018 - Modifié le 9 nov. 2018 à 09:36
DonRuca Messages postés 2 Date d'inscription vendredi 9 novembre 2018 Statut Membre Dernière intervention 30 novembre 2018 - 30 nov. 2018 à 21:29
Bonjour,
j'essaye de faire un autocomplete dans un résultat d'un query MySql mais malheureusement cela ne fonctionne pas et vu mon niveau en programmation je suis un peu perdu :)

Bref après quelques jours de recherche un peu partout je ne trouve pas solution à mon problème et espère que vous puissiez m'aider.

D'avance merci pour votre aide

Voici mon souci:
Je fais afficher une liste de circuits (requête mysql) où j'aimerais que chaque pilote puisse choisir un numéro de moto pour un circuit donné, les circuits ont bien sûr des ID différents.
J'aimerais que l'autocomplete fonctionne pour chaque ID "numero_moto" et je dois aussi récupérer l'ID du circuit pour vérification si le numéro est disponible pour ce circuit en particulier mais je n'y arrive pas.
L'autocomplete fonctionne très bien pour un seul circuit mais pas s'il y en a plusieurs.

Je me suis basé sur un exemple trouvé sur le web pour l'autocomplete que voici:

index.php
<label style="color: #000000; text-align:center;">N° souhaité:</label>
<input style="width: 50px;" type="text" id="numero_moto'.$i.'" onkeyup="autocomplet('.$i.')"/>
<div id="choix_nummoto_id'.$i.'"></div>


script.js
function autocomplet(i) {
 var keyword = $("#numero_moto+i").val();
 $.ajax({
  url: "ajax_refresh.php",
  type: "POST",
  data: {keyword:keyword},
  success:function(data){
   $("#choix_nummoto_id+i").show();
   $("#choix_nummoto_id+i").html(data);
  }
 });
}

// set_item : this function will be executed when we select an item
function set_item(item) {
 // change input value
 $("#choix_nummoto_id+i").val(item);
 // hide proposition list
 $("#choix_nummoto_id+i").hide();
}


ajax_refresh.php
// PDO connect *********
function connect() {
    return new PDO('mysql:host=host_db;dbname=db_name', 'user', 'password', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}

$pdo = connect();
$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT * FROM {$tb_inscription} WHERE nummoto_tb_inscription_circuit LIKE (:keyword) ORDER BY nummoto_tb_inscription_circuit ASC LIMIT 0, 10";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
 // put in bold the written text
 $liste_nummoto = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['nummoto_tb_inscription_circuit']);
 
 // add new option
    echo '<li onclick="set_item(\''.$rs['nummoto_tb_inscription_circuit'].'\')">'.$liste_nummoto.'</li>';
}

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
9 nov. 2018 à 13:03
Bonjour
Tu dois mettre les +i en dehors de quotes.

1
DonRuca Messages postés 2 Date d'inscription vendredi 9 novembre 2018 Statut Membre Dernière intervention 30 novembre 2018
30 nov. 2018 à 21:29
Cool :) top!!!
Merci beaucoup c'est exactement ça
0
Rejoignez-nous