Menu

Récupérer les données d'une liste déroulante dans un champs input text

Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
- - Dernière réponse : PatrickMoustache
Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
- 13 mai 2019 à 11:21
Bonjour à tous,

Voici pas mal de temps que je planche sur un problème sans parvenir à le résoudre malgré de nombreuses recherches sur différents forums :

J'ai un formulaire constitué d'un <select> qui récupère une liste de produits dans une base mysql et de 3 input type="text" (Produit, Prix, Code TVA). Je souhaiterais que lorsque je sélectionne un produit dans ma liste déroulante, le produit, le prix et le code TVA s'affichent dans les champs des input correspondants afin d'éventuellement pouvoir les modifier (si le prix change par exemple). Ces données seront ensuite traitées dans un autre fichier .php.

Après un nombre incalculable d'essais, voici le code qui me paraissait le plus logique, et qui évidemment ne fonctionne pas. Mes champs restent désespérément vides (Ceci est un fichier de test, c'est la raison pour laquelle l'aspect sécurité n'est pas géré) :

<form action="test_traitement.php" method="post">
<label for="select">Sélectionner un nom à modifier ou ajouter un nouveau nom : </label><br>
<select name="select" id="select">
<option value=""></option>

<?php
$conn = new PDO ('mysql:host=localhost;dbname=test' , 'root' , 'root');


$req = $conn->query('SELECT * FROM produits ORDER BY produits');
// Je crée un tableau associatif avec des valeurs vides
$value_input = array(
'produits' => "",
'prix' => "",
'tva' => "");
// Je parcoure le tableau dont je récupère les valeurs pour les stocker dans mon tableau
while ($res = $req->fetch()) {
echo "<option class='opt' value=" . $res['id'] . ">" . $res['produits'] . "</option>";
if ( $_POST['select'] == $res['id'] ) {
$value_input['produits'] = $res['produits'];
$value_input['prix'] = $res['prix'];
$value_input['tva'] = $res['tva'];

}
}
?>

</select><br>

<!-- Je cherche à afficher les valeurs de mon tableau associatif dans les value de mes input -->
<label for="nom">Produit : </label><input type="text" name="nom" value="<?php echo "$value_input[produits]";?>"/><br>
<label for="prenom">Prix : </label><input type="text" name="prenom" value="<?php echo "$value_input[prix]";?>"/><br>
<label for="nom">Code TVA : </label><input type="text" name="ville" value="<?php echo "$value_input[tva]";?>"/><br>
<input type="submit" name="add" value="Enregistrer">
</form>


Je vous remercie par avance de l'aide que vous pourrez m'apporter.
Bien cordialement !

Patrick.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
25503
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2019
1974
0
Merci
Bonjour,

Si je comprends bien... tu voudrais alimenter tes INPUT au moment de la selection dans ta liste déroulante ?
Dans ce cas... ça ne peut pas se faire en php.
Je rappelle que PHP s'éxécute côté SERVEUR. le code ne sera donc exécuté qu'àprès un appel à la page ou un SUBMIT.

Pour modifier le contenu des champs html sans recharger la page...seul le Javascript permet de le faire.
Donc, soit tu stockes ton "array" dans une variable JS que tu utilises ensuite pour renseigner les champs voulus... soit (et c'est ce que je ferai....) tu utilises de l'ajax.
Voici des exemples :
http://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery
et Il y en a des millions d'autres sur le net au cas où.

PatrickMoustache
Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
-
Merci Jordane, je vais essayé de creuser de ce coté. Je suis à peine initié en javascript et ne connais pas du tout ajax. Y'a plus qu'à apprendre tout ça !!! :)
PatrickMoustache
Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
-
PS
Je viens d'ouvrir le zip !
Euh, comment dire... J'en ai pour quelques jours à comprendre tout ça !!! :)
Merci quand même pour ce travail !
jordane45
Messages postés
25503
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2019
1974 > PatrickMoustache
Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
-
tu trouveras surement des exemples plus simple sur le net.
C'est vrai que mon code est un peu compliqué...

Par exemple :
http://memo-web.fr/categorie-ajax-2.php

et un tuto sur le sujet :
https://openclassrooms.com/fr/courses/1567926-un-site-web-dynamique-avec-jquery/1569648-le-fonctionnement-de-ajax
PatrickMoustache
Messages postés
15
Date d'inscription
vendredi 22 mai 2015
Statut
Membre
Dernière intervention
13 mai 2019
-
Merci, je vais commencer par ça, j'irai vers des codes plus compliqués après ! ;)
Commenter la réponse de jordane45