2009-11-20 9 views
1

J'ai une page PHP qui a actuellement 4 ans de positions d'équipe en colonnes sur la page. Le client veut sélectionner les joueurs en position et avoir le premier, le deuxième et le troisième choix. Actuellement, la page montre 4 colonnes avec des ensembles de combos pour chaque position. Chaque combo a un jeu complet de joueurs et l'utilisateur choisit le joueur qu'il veut parmi les combos. Sur soumettre les positions des joueurs sont stockés dans la base de données. Cependant, le client veut maintenant changer la page de sorte que lorsqu'il sélectionne un joueur dans une année et position, alors le joueur est retiré du combo et ne peut plus être sélectionné pour cette année. J'ai utilisé un peu d'AJAX mais je me demandais si quelqu'un avait des idées/suggestions. La page est actuellement assez lente, donc ils veulent l'accélérer aussi.PHP Combo Box AJAX Refresh

La mise en page est actuellement comme celui-ci

POISTION    YEAR1   YEAR2  YEAR3   YEAR4 
1     COMBOC1   COMBOC1  COMBOC1  COMBOC1 
        COMBOC2   COMBOC2  COMBOC2  COMBOC2 
        COMBOC3   COMBOC3  COMBOC3  COMBOC3 

2 same as above 

COMBOC1, 2 et 3 ont tous actuellement les mêmes joueurs - quand un joueur est sélectionné, il doit être supprimé pour tous les combos en dessous. Je pensais commencer en changeant la conception de page et d'avoir des zones de texte pour les joueurs et un seul joueur sélectionner dans chaque année comme ceci:

POISTION    YEAR1       YEAR2   YEAR3   YEAR4 
1     <PLAYER><POSITION><CHOICE> ... 

        [TEXT BOX CHOICE1] 
        [TEXT BOX CHOICE2] 
        [TEXT BOX CHOICE3] 

2 ... 

J'ai seulement 1 zone de liste déroulante pour chaque année à se soucier - I J'ai cependant le même problème de rafraichir la combo et de supprimer le player qui a été sélectionné, et je préfèrerais le faire avec une page de soumission.

Désolé pour le long affichage - acclamations

Répondre

0

Si je comprends bien votre question, ce que vous voulez faire est de supprimer des options de boîtes de sélection suivantes en fonction de ce qui est sélectionné dans des boîtes de sélection des années précédentes. Vous ne devriez pas avoir à soumettre des formulaires pour cela - vous devriez être capable de le faire purement en javascript. Ce code devrait vous aider à démarrer:

 

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".year").change(function() { 
      var name = $(this).attr("name"); 
      var checkYearNum = name.substr(4); 
      var value = $(this).val(); 
      var removeFromLaterYears = function (index) { 
       var yearNum = $(this).attr("name").substr(4); 
       if (yearNum > checkYearNum) { 
        var selector = "[value='" + value[0] + "']"; 
        $(this).children(selector).remove(); 
       } 
      } 
      $(".year").each(removeFromLaterYears); 
     }); 
    }); 
</script> 
</head> 
<body> 
<form> 
<fieldset> 
<select class="year" name="year1"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 

<select class="year" name="year2"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 

<select class="year" name="year3"> 
    <option value="">Select...</option> 
    <option value="player1">Player 1</option> 
    <option value="player2">Player 2</option> 
    <option value="player3">Player 3</option> 
</select> 
</fieldset> 
</form> 
</body> 
</html> 
 

En fait, tout cela fait utilise JQuery pour définir un événement qui, lorsque l'une des boîtes de sélection modifications, supprime la sélection avec la même valeur de toutes les boîtes de sélection suivantes qui ont un numéro d'année (défini dans l'attribut "nom" de chaque boîte de sélection) qui est supérieur au numéro de l'année de la boîte de sélection qui a été modifiée. En plus de cela, vous devrez garder une trace des sélections qui ont été retirées des boîtes de sélection afin qu'elles puissent être rajoutées si le joueur n'est pas sélectionné. Comme vous avez également parlé des listes déroulantes, je suppose que vous avez un champ de saisie de texte en plus des cases de sélection, mais vous pouvez utiliser le même principe avec celles-ci.

Si vous n'êtes pas familier avec JQuery, vous voudrez peut-être apprendre à le connaître - cela rend beaucoup plus facile ce genre de choses. Ce serait un bon point de départ: http://docs.jquery.com/How_jQuery_Works. J'espère que cela t'aides.

+0

À la vôtre Steven J'ai parcouru une piste légèrement différente avec des zones de texte maintenant pour accélérer le tirage de la page. Mais votre requête fonctionnera toujours je pense pour enlever les valeurs du combo et fournit un très bon point de départ. Salut Steve – bhs

+0

Cool, je suis heureux de pouvoir vous aider. –

Questions connexes