Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplir les listes déroulantes avec des entrées MySQL

Vous devriez regarder Javascript ou jQuery pour atteindre votre objectif. J'ai utilisé jQuery sur la base de la question que je vous ai posée plus tôt. C'est aussi plus simple et moins codé.

Votre PHP :

Ajouter un attribut ID event_menu à votre menu de sélection

echo '<select id="event_menu">';
while ($row = mysqli_fetch_assoc($rEvent)) {
        echo '<option value="'.$row['event_id'].'">'.$row['event_name'].'</option>';
}
echo '</select>';

<div id="container_for_new_menu"></div>

En utilisant jQuery :

$('#event_menu').on('change', function() {
    // get selected value and build data string for AJAX
    var event_selected = "event_selected="+$(this).val();

    // send the selected data to a PHP page to build the populated menu
    $.ajax({
        url : 'populate-menu.php',
        type: 'POST',
        data : event_selected,
        dataType : 'html',
        success : function(data) {
            $('#container_for_new_menu').html(data);
        }, error : function() {
            alert("Something went wrong!");
        }
    });
});

Sur populate-menu.php , avoir quelque chose comme :

$event_selected = isset($_POST['event_selected']) ? $_POST['event_selected'] : null;

// do SQL query here based on user's selection
// making sure you validate the data in the POST request for malicious BS
// or use parameterized queries

// then build a new menu to send back
echo '<select>';
    // loop through results and build options
echo '</select>';

Ce nouveau menu sera ensuite publié sur votre page d'origine dans le container_for_new_menu élément.