2009-12-08 19 views
2

J'ai besoin de quelques précisions sur la façon de remplir select (s) avec les données de mysql. Fondamentalement ce que j'essaye de faire est:remplir différentes données avec select onChange dans php

Il y aura une première boîte de sélection avec quelques données dedans.

<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

lorsque l'utilisateur sélectionne une option dans la première sélection, il y a une seconde sélectionner en dessous, qui doivent refléter les valeurs en fonction de la sélection faite dans la première sélection.

<select> 
    <option>1.1</option> 
    <option>1.2</option> 
    <option>1.3</option> 
</select> 

Les données sont des données de MySQL. Je ne suis pas sûr si besoin de poster sur la même page, mais si je le fais, comment conserver les valeurs déjà sélectionnées dans les boîtes de sélection précédentes? Dois-je utiliser javascript?

toute aide?

Merci.

Répondre

4

Vous devez utiliser javascript pour ne pas avoir besoin d'actualiser la page. Je viens de relire votre question et je vais avoir une solution impliquant une requête AJAX dans une seconde pour extraire des données dynamiques:

HTML

<select name="select1" id="select1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

<select name="select2" id="select2"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

jQuery

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#select1').change(getDropdownOptions); 
}); 

function getDropdownOptions() { 
    var val = $(this).val(); 
    // fire a POST request to populate.php 
    $.post('populate.php', { value : val }, populateDropdown, 'html'); 
} 

function populateDropdown(data) { 
    if (data != 'error') { 
     $('#select2').html(data); 
    } 
} 
</script> 

populate.php

<?php 
if (!empty($_POST['value'])) { 
    // query for options based on value 
    $sql = 'SELECT * FROM table WHERE value = ' . mysql_real_escape_string($_POST['value']); 

    // iterate over your results and create HTML output here 
    .... 

    // return HTML option output 
    $html = '<option value="1">1</option>'; 
    $html .= '<option value="b">B</option'; 
    die($html); 
} 
die('error'); 
?> 
+0

Je suis nouveau à l'utilisation ajax donc pouvez-vous s'il vous plaît combiner le code afin que je puisse voir où exactement cet appel va s'adapter? – JPro

+0

merci. Je vais essayer ça. – JPro

+0

J'ai travaillé jusqu'à obtenir les valeurs en seconde sélection, pouvez-vous s'il vous plaît clarifier comment itérer toutes les valeurs de DB et le stocker en $ html? – JPro

Questions connexes