PHP Mysql et Javascript : Affichage dans plusieurs input selon (autocomplétion)
Résolu/Fermé
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
-
Modifié le 20 mai 2020 à 16:23
Jules_2569 Messages postés 52 Date d'inscription vendredi 13 décembre 2019 Statut Membre Dernière intervention 28 juillet 2020 - 22 mai 2020 à 16:03
Jules_2569 Messages postés 52 Date d'inscription vendredi 13 décembre 2019 Statut Membre Dernière intervention 28 juillet 2020 - 22 mai 2020 à 16:03
A voir également:
- PHP Mysql et Javascript : Affichage dans plusieurs input selon (autocomplétion)
- Telecharger javascript - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
- Php natif - Forum PHP
10 réponses
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
20 mai 2020 à 16:43
20 mai 2020 à 16:43
Bonjour,
Sans regarder plus loin ... tu as écris
Sauf que tu veux 1 value
et 1 ids
Donc
Sans regarder plus loin ... tu as écris
$('#prix_ht').val(ui.item.value); // save selected id to input $('#id_items').val(ui.item.value);
Sauf que tu veux 1 value
et 1 ids
Donc
$('#prix_ht').val(ui.item.value); // save selected id to input $('#id_items').val(ui.item.id_items);
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
20 mai 2020 à 17:37
20 mai 2020 à 17:37
Merci Jordane,
La requête ci-dessous est correcte ?
J'ai fais la modifiication ci-dessous :
ça me renseigne l'id_items ça l'affiche dans le champs input prix_ht et dans le champs ,id_items je n'ai rien
La requête ci-dessous est correcte ?
$query = "SELECT id_items, prix_ht as value, item as label FROM items WHERE item like'%".$search."%'";
J'ai fais la modifiication ci-dessous :
ça me renseigne l'id_items ça l'affiche dans le champs input prix_ht et dans le champs ,id_items je n'ai rien
$('#prix_ht').val(ui.item.value); // save selected id to input $('#id_items').val(ui.item.id_items); // save selected id to input
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
20 mai 2020 à 17:47
20 mai 2020 à 17:47
As tu vidé le cache de ton navigateur ?
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
>
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
Modifié le 20 mai 2020 à 17:59
Modifié le 20 mai 2020 à 17:59
Je viens de le faire, j'ai essayé avec un autre navigateur pas encore utilisé c'est pareil.
Dans la console j'ai ça?
Json
0:79
1:9
2: PREMIUM PETITE CITADINES
prix_ht : 79
value: 9
label: PREMIUM PETITE CITADINES
$('#prix_ht').val(ui.item.value); // save selected id to input $('#id_items').val(ui.item.id_items); // save selected id to input
Dans la console j'ai ça?
Json
0:79
1:9
2: PREMIUM PETITE CITADINES
prix_ht : 79
value: 9
label: PREMIUM PETITE CITADINES
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
>
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
20 mai 2020 à 18:01
20 mai 2020 à 18:01
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
Modifié le 20 mai 2020 à 18:17
Modifié le 20 mai 2020 à 18:17
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
20 mai 2020 à 19:56
20 mai 2020 à 19:56
Vu ce que ça te retourne... je doute que la requête que tu exécutes soit bien celle là
Vérifie ton code php...
$query = "SELECT id_items, prix_ht as value, item as label FROM items WHERE item like'%".$search."%'";
Vérifie ton code php...
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
>
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
20 mai 2020 à 19:57
20 mai 2020 à 19:57
Et vu que tu fais du PDO, suis les consignes données ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
22 mai 2020 à 12:18
22 mai 2020 à 12:18
J'ai fais la vérification, au niveau de PDO j'ai vérifier ce qu'il fallait. Je n'ai pas de message d'erreur
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 mai 2020 à 12:25
22 mai 2020 à 12:25
As tu également indiqué le mode de fetch par défaut ? il serait bien de le mettre sur FETCH_ASSOC ( comme dans le code du lien que je t'ai donné).
Ensuite, remontre nous une capture écran de ton ajax (onglet REPONSE) qu'on voit ce que ton code retourne...
Il serait bien également de nous remontrer le code php de ton fichier items.php ... car je pense que tu n'y as pas mis la bonne requête.
Ensuite, remontre nous une capture écran de ton ajax (onglet REPONSE) qu'on voit ce que ton code retourne...
Il serait bien également de nous remontrer le code php de ton fichier items.php ... car je pense que tu n'y as pas mis la bonne requête.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
Modifié le 22 mai 2020 à 12:53
Modifié le 22 mai 2020 à 12:53
la page de connexion :
Voici le code de la page items.php
Le fichier Ajax
<?php //session_start(); //On commence par activer l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); /* DATABASE CONFIGURATION */ define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_DATABASE', 'test'); function getDB() { $dbhost=DB_SERVER; $dbuser=DB_USERNAME; $dbpass=DB_PASSWORD; $dbname=DB_DATABASE; try { $bdd = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $bdd->exec("set names utf8"); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); return $bdd; } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); exit; } } ?>
Voici le code de la page items.php
<?php require "../inc/connexion.php"; //connexion à la bdd $bdd = getDB(); if(isset($_POST['search'])){ $search = $_POST['search']; $query = "SELECT id_items , prix_ht, as value, item as label FROM items WHERE item like'%".$search."%'"; try{ $requete = $bdd -> prepare($query) ; $requete->execute() ; //var_dump($requete); $response= $requete->fetchAll(); // on stocke le resultat dans un array }catch(Exception $e){ // en cas d'erreur : $response = " Erreur ! ".$e->getMessage(); } echo json_encode($response); // var_dump($response); exit; }
Le fichier Ajax
<script > $( function() { $( "#autocompletei" ).autocomplete({ source: function( request, response ) { $.ajax({ url: "<?php echo URLSITE;?>/fetch/Items.php", type: 'post', dataType: "json", data: { search: request.term }, success: function( data ) { response( data ); } }); }, select: function (event, ui) { $('#autocompletei').val(ui.item.label); // display the selected text $('#id_items').val(ui.item.id_items); // save selected id to input $('#prix_ht').val(ui.item.value); // save selected id to input return false; } }); }); function split( val ) { return val.split( /,\s*/ ); } function extractLast( term ) { return split( term ).pop(); } </script>
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
22 mai 2020 à 13:01
22 mai 2020 à 13:01
après il y a aussi peut-être une confusion comme le champs dans la table items s'apelle aussi item.
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 mai 2020 à 14:16
22 mai 2020 à 14:16
Donc...
le code de ton fichier items.php ... n'est pas celui que ton code utilise.
Il semble que ton script ajax (côté JS) appelle le fichier Items.php (avec un I majuscule )
Et puis.. si c'était réellement le "bon" que tu nous montres.. ce n'est pas possible car tu devrais avoir une erreur...
Ta requête
ne peut pas marcher !
Tu n'a qu'a la tester directement dans ta bdd (via phpmyadmin) en remplacer le $search par une "vraie valeur" pour t'en rendre compte...
Je maintiens donc que tu ne nous montres pas le bon fichier !
le code de ton fichier items.php ... n'est pas celui que ton code utilise.
Il semble que ton script ajax (côté JS) appelle le fichier Items.php (avec un I majuscule )
Et puis.. si c'était réellement le "bon" que tu nous montres.. ce n'est pas possible car tu devrais avoir une erreur...
Ta requête
"SELECT id_items , prix_ht, as value, item as label FROM items WHERE item like'%".$search."%'";
ne peut pas marcher !
Tu n'a qu'a la tester directement dans ta bdd (via phpmyadmin) en remplacer le $search par une "vraie valeur" pour t'en rendre compte...
Je maintiens donc que tu ne nous montres pas le bon fichier !
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
22 mai 2020 à 15:16
22 mai 2020 à 15:16
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 mai 2020 à 15:19
22 mai 2020 à 15:19
ben oui, ta requête est fausse...
A changer par
Quoi qu'il en soit, ton ajax n'appelle pas le bon fichier...
Donc soit tu ne modifies pas le bon....
Soit tu ne pousses pas tes modifs sur le bon serveur
Y'a pas de magie ... soit tu changes le bon fichier.. soit ça ne marchera jamais !
A changer par
$query = "SELECT id_items , prix_ht as value, item as label FROM items WHERE item like'%".$search."%'";
Quoi qu'il en soit, ton ajax n'appelle pas le bon fichier...
Donc soit tu ne modifies pas le bon....
Soit tu ne pousses pas tes modifs sur le bon serveur
Y'a pas de magie ... soit tu changes le bon fichier.. soit ça ne marchera jamais !
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
22 mai 2020 à 15:37
22 mai 2020 à 15:37
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 mai 2020 à 15:42
22 mai 2020 à 15:42
Vu que ton fichier se trouve dans le même répertoire
change
par
et pense bien à vider le cache de ton navigateur avant de rééssayer.
change
url: "<?php echo URLSITE;?>/fetch/Items.php",
par
url: "Items.php",
et pense bien à vider le cache de ton navigateur avant de rééssayer.
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
>
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
22 mai 2020 à 16:00
22 mai 2020 à 16:00
persoo je viens de tester
avec, comme code pour le php Items.php (n'ayant pas ta bdd.. j'ai juste généré un array qui devrait correspondre à ce que ta requête retourne...)
<!Doctype html> <html> <head> <title>TEST</title> <meta charset="utf-8"> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="jquery-3.5.1.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script> </head> <body> <div class="modal-body"> <div class="form-group"> <label>item:</label> <input type="text" class="form-control" id="autocompletei" name="item" value=""> <input type="text" class="form-control" id="id_items" name="id_items"> </div> <div class="form-group"> <label>Prix HT:</label> <input type="number" class="form-control" id="prix_ht" name="prix_ht" value=""> </div> </div> <script type="text/javascript"> $( function() { $( "#autocompletei" ).autocomplete({ source: function( request, response ) { $.ajax({ url: "Items.php", type: 'post', dataType: "json", data: { search: request.term }, success: function( data ) { response( data ); } }); }, select: function (event, ui) { console.log('UI',ui.item); $('#autocompletei').val(ui.item.label); // display the selected text $('#prix_ht').val(ui.item.value); // save selected id to input $('#id_items').val(ui.item.id_items); // save selected id to input return false; } }); }); </script> </body> </html>
avec, comme code pour le php Items.php (n'ayant pas ta bdd.. j'ai juste généré un array qui devrait correspondre à ce que ta requête retourne...)
<?php $response = array(); $response[] = array("id_items"=>1,"value"=>9,"label"=>"test"); $response[] = array("id_items"=>2,"value"=>7,"label"=>"test 2"); echo json_encode($response); exit;
Jules_2569
Messages postés
52
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
28 juillet 2020
22 mai 2020 à 16:03
22 mai 2020 à 16:03
Merci