Bonsoir,
je voudrais remplir trois <select> sachant que le premier possède toutes les valeurs de la colonne Nom de la table Ingredient de ma BD, et je voudrais que le deuxième <select> (et donc le troisième après le deuxième) prenne des valeurs en fonction de l'ingrédient qu'on aura choisi dans le premier <select>.
Une fois qu'on choisit l'ingrédient dans le premier <select>, on refait une requête pour trouver toutes les lignes de la table Cocktail qui possèdent l'ingrédient choisi (colonne Ingredient_01).
Le problème ici c'est que j'ai bien tous les ingrédients dans le premier <select> mais je n'ai rien dans les autres <select>.
Je poste mon code ici en espérant que vous puissiez m'aider (je suis obligé d'utiliser JavaScript/JSON/Ajax pour mon projet au cas où ça pourrait aider, mais j'ai du mal à comprendre le fonctionnement).
exempleIngredient.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php $pdo = new PDO('mysql:host=mysql-X.alwaysdata.net; dbname=X_cocktails', 'X', 'X'); // Connexion a la BD // En cas d erreur de connexion if ($pdo->connect_error) die('Erreur de connexion (' . $pdo->connect_errno . ') ' . $pdo->connect_error); $ingredients = $pdo->prepare("SELECT * FROM Ingredient"); $ingredients->execute(); echo "<select name='ingredient' onchange='maFonction();'>"; echo "<option value='0'>Choix de l'ingredient 1</option>"; while ($ingredient = $ingredients->fetch()) echo "<option value='" . $ingredient['ID'] . "'>" . $ingredient['Nom'] . "</option>"; echo "</select>";
exemple.js
cocktails.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function maFonction() { var ingredient = $("\\:select[name=ingredient]").val(); // On récupère la valeur du select ayant pour id "marque" $.post('cocktails.php', // AJAX : On appelle un script php {nom_ingredient:ingredient}, // Passage de la variable en paramètre function(data) { $('#listeIngredients2').html(data); // On ajoute le résultat de ce script dans la balise qui a pour id "conteneur". (un div ou un span comme tu le souhaites) }); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php $pdo = new PDO('mysql:host=mysql-X.alwaysdata.net; dbname=X_cocktails', 'X', 'X'); // Connexion a la BD // En cas d erreur de connexion if ($pdo->connect_error) die('Erreur de connexion (' . $pdo->connect_errno . ') ' . $pdo->connect_error); $ingredients = $pdo->prepare("SELECT * FROM Cocktail WHERE Ingredient_01 =" . $_POST['nom_ingredient']); $ingredients->execute(); echo "<select name='ingredient2'>"; echo "<option value='0'>Choix de l'ingredient 2</option>"; while ($ingredient = $ingredients->fetch()) echo "<option value='" . $ingredient['ID'] . "'>" . $ingredient['ID'] . "</option>"; echo "</select>";
pageCocktails.php
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ... <head> ... <script src="js/exemple.js"></script> </head> <body> ... <?php include('exempleIngredient.php'); ?> ... </body>
Merci d'avance pour l'aide que vous pourrez m'apporter !
Partager