Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Preenchendo listas suspensas com entradas do MySQL


Você deve estar olhando para Javascript ou jQuery para alcançar seu objetivo. Eu usei jQuery com base na minha pergunta para você anteriormente. Também é mais simples e menos código.

Seu PHP:

Adicione um atributo de ID event_menu para o seu menu de seleção
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>

Usando 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!");
        }
    });
});

Em populate-menu.php , tem algo como:
$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>';

Este novo menu será postado de volta em sua página original no container_for_new_menu elemento.