sql >> Database teknologi >  >> RDS >> Mysql

Udfylder rullemenuer med MySQL-poster

Du bør kigge på Javascript eller jQuery for at nå dit mål. Jeg har brugt jQuery baseret på mit spørgsmål til dig tidligere. Det er også enklere og mindre kode.

Din PHP:

Tilføj en ID-attribut event_menu til din valgmenu

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>

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

populate-menu.php , har noget som:

$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>';

Denne nye menu vil derefter blive sendt tilbage til din oprindelige side i container_for_new_menu element.



  1. MYSQL - få en række for hvert år, med samlet sum for hver måned

  2. Kode til at validere SQL-scripts

  3. Datotid i PHP Script

  4. Sådan tilføjes 10 sekunder i current_timestamp SQL (Oracle)