PHP Combo Box AJAX Yenile

1 Cevap php

I have a PHP page that currently has 4 years of team positions in columns on the page. The client wants to select the players in positions and have first, second and thrid choices. Currently the page shows 4 columns with sets of combos for each position. Each combo has a full set of players in it and the user chooses the player he wants from the combos. On submit the player positions are stored in the database. However, the client now wants to change the page so that when he selects a player in a year and position then the player is removed from the combo and can no longer be selected for that year. I've used a bit of AJAX but was wondering if anyone had any thoughts/suggestions. The page is currently quite slow so they want it speeded up as well.

Sayfa düzeni böyle şu anda

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

2 same as above

COMBOC1, 2 ve 3 hepsi şu anda aynı oyuncular var - bir oyuncu bunun altındaki tüm kombinasyonları için kaldırılması gerekiyor seçildiğinde. Ben sayfa tasarımını değiştirerek ve bunun gibi her yıl altında seçin oyuncuları ve tek bir oyuncu için metin kutuları alarak başlayan düşünüyordum:

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

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

2 ...

Sonra sadece endişelenecek her yıl için 1 combo kutusu var - Ben ancak açılan kutuyu ferahlatıcı ve seçildikten çaları çıkarmadan aynı sorun var, ve ben bir sayfa göndermek withough bunu tercih ederim.

Şerefe - uzun yazabilmek için özür dilerim

1 Cevap

Sorunuzu doğru anlama, ne yapmak istediğiniz önceki yıllarda seçin kutularda neyin seçili olduğuna bağlı olarak sonraki select kutuları seçenekleri kaldırmak olduğunu. Bunu yapmak için herhangi bir form göndermek zorunda olmamalı - Eğer javascript sadece bunu yapmak gerekir. Bu kod başlamanıza yardımcı olacaktır:


<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>

Temelde, bütün bu olay ayarlamak için JQuery kullanarak yapıyor seçim sandıkları değişikliklerden biri, her "isim" özniteliği tanımlanmış bir yıl numarasını (herhangi aşağıdaki seçim kutularından aynı değere sahip seçimini kaldırır zaman, değiştirildi seçim kutusunu yıl sayısından daha fazladır kutusunu) seçin.

Buna ek olarak, oyuncu seçilmemiş ise onlar yeniden eklenecek böylece seçimleri hangi seçim kutularından çıkarıldı hangi takip gerekir.

Siz de açılan kutular hakkında konuşuyorduk beri, ben size seçme kutularına ek olarak bir metin girişi alanını var sayıyorum, ama bu ile aynı prensibi kullanabilirsiniz.

Eğer JQuery aşina değilseniz bunu tanımak isteyebilirsiniz - bu çok daha kolay gibi şeyler yapar. Bu başlamak için iyi bir yer olurdu: http://docs.jquery.com/How_jQuery_Works. Umarım bu yardımcı olur.