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
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)
    });
}
cocktails.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 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 !