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

Fermé
PatrickMoustache Messages postés 15 Date d'inscription vendredi 22 mai 2015 Statut Membre Dernière intervention 13 mai 2019 - 12 mai 2019 à 18:38
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.
A voir également:

1 réponse

jordane45 Messages postés 38430 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 février 2025 4 735
13 mai 2019 à 00:07
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 :
https://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ù.

0
PatrickMoustache Messages postés 15 Date d'inscription vendredi 22 mai 2015 Statut Membre Dernière intervention 13 mai 2019
13 mai 2019 à 08:56
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 !!! :)
0
PatrickMoustache Messages postés 15 Date d'inscription vendredi 22 mai 2015 Statut Membre Dernière intervention 13 mai 2019
Modifié le 13 mai 2019 à 11:05
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 !
0
jordane45 Messages postés 38430 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 février 2025 4 735 > PatrickMoustache Messages postés 15 Date d'inscription vendredi 22 mai 2015 Statut Membre Dernière intervention 13 mai 2019
13 mai 2019 à 11:13
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/

et un tuto sur le sujet :
https://openclassrooms.com/fr/courses/1567926-un-site-web-dynamique-avec-jquery/1569648-le-fonctionnement-de-ajax
0
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
Merci, je vais commencer par ça, j'irai vers des codes plus compliqués après ! ;)
0