2009-08-29 5 views
2

J'ai une page de planification qui affiche un calendrier de la semaine (du dimanche au samedi).meilleure façon de créer des menus déroulants dyanmic

La manière dont je souhaite ajouter des employés à cette planification est avec une série de menus contextuels qui changent en fonction des valeurs sélectionnées.

Par exemple, le premier menu sera Jobs avec <option> valeurs propagées à partir de la table des tâches dans ma base de données.

Maintenant, dites qu'un utilisateur sélectionne 'Cook' dans le menu contextuel Tâches. Le menu suivant 'Employés' montrera tous les employés de la table des employés qui ont le code de travail de 'cook'. Me montrant ainsi tous les cuisiniers qui seraient disponibles ce jour-là.

Quelle est la meilleure façon de faire une série de menus comme celui-ci?

Tout lien vers des didacticiels de qualité serait apprécié.

Répondre

1

Vous pouvez le faire en utilisant Javascript/AJAX. L'utilisateur choisit une option dans le premier menu, et le menu suivant met automatiquement à jour les options avec une requête au serveur envoyant l'option choisie dans le premier menu.

Cela pourrait être fait de la manière suivante avec jQuery, que je recommande fortement d'éviter différents problèmes de navigateur. Ceci est incomplet, mais devrait vous donner un grand début de la tête:

HTML

<select id='jobs_menu' name='job'> 
    <option>Cook</option> 
    <option>Waiter</option> 
</select> 

<select id='employees_menu' name='employees'> 
    <option>John Doe</option> 
    <option>Doe John</option> 
    <option>Everyone else</option> 
</select> 

Javascript/jQuery

$(document).ready(function(){ 

    $('#jobs_menu').change (function() { 

     //ajax call 
     $.get('http://yourscript.com/script.php', { job: $('#jobs_menu').val() },  
      function() { 
       //parse the json and fill the #employees_menu with the results 
      }); 
    });  
}); 

PHP

if (isset ($_GET['job'])) 
{ 
    $names = array(); 
    $job = mysql_real_escape_string ($_GET['job']); 
    $res = mysql_query ("SELECT name FROM Employees WHERE job='$job'"); 

    while ($row = mysql_fetch_assoc ($res)) 
    { 
     $names[] = $row['name']; 
    } 

    echo json_encode ($names); 
} 
+0

Thank you! Je vais essayer. Je vois comment tout cela fonctionne et je pense que je peux simplement faire défiler les $ noms avec un document.myform.selectname.options [0] = new Option() pour remplir les options. – ian

Questions connexes