У меня есть один игровой стол, где хранятся все игроки.
Когда я выберу игроков для домашней команды и команды гостей. У меня есть два разных запроса SQL на столе игрока.
<?
$select_query = mysql_query("SELECT * FROM $player_table_2016 WHERE active = 1 ORDER by tname ASC");
echo "<select data-placeholder='Spieler auswählen...' class='chosen-select' style='width:220px;' multiple tabindex='4' name='homespieler[]' required>";
while ($row = mysql_fetch_array($select_query)) {
echo "<option value='".$row['id']."'>" .$row['tname']."</option>";
</option>";
}
echo "</select>";
?>
после этого я выбираю команду гостей с другим запросом:
$select_query = mysql_query("SELECT * FROM $player_table_2016 WHERE active = 1 ORDER by tname ASC");
echo "<select data-placeholder='Spieler auswählen...' class='chosen-select' style='width:220px;' multiple tabindex='4' name='awayspieler[]' required>";
while ($row = mysql_fetch_array($select_query)) {
echo "<option value='".$row['id']."'>" .$row['tname']."</option>";
</option>";
}
echo "</select>";
Проблема в том, что я не могу проверить в выборе команды гостей, если игрок уже выбран для домашней команды. Было бы здорово выбрать в составе гостей только тех игроков, которых нет в составе хозяев.
Как это может быть возможным?
Вы можете использовать ajax для таких сценариев.
Как только пользователь выберет всех игроков для домашней команды, используйте jQuerys .blur
событие и передать все идентификаторы в php.
И чем вы можете использовать запрос
select * from table where id not in ($id)
где $ id — это значение, полученное методом POST или GET
Решение Javascript с одной страницей
После выбора вашего домашнего игрока вам нужно вызвать событие, чтобы исключить игрока из второго выпадающего списка. Вы можете сделать это с помощью JavaScript, например.
В ваш выбор добавить идентификатор, как это:
<select id='homeTeamPlayer'>
<select id='awayTeamPlayer'>
В вашем первом <select>
добавить метод javascript onchange
как это:
<select onchange="excludePlayer()">
Этот метод должен затем отключить опцию во втором выпадающем меню:
function excludePlayer() {
var homeTeamPlayerId= document.getElementById("homeTeamPlayer").value
// Get all options within <select id='homeTeamPlayer'>...</select>
var op = document.getElementById("awayTeamPlayer").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
(op[i].value == homeTeamPlayerId)
? op[i].disabled = true
: op[i].disabled = false ;
}
}
(скопировал код отключения отсюда: Как я могу отключить <вариант> в <Выбрать> на основе его значения в JavaScript?)
Вы должны также реализовать это для второго выпадающего списка.
<html>
<head>
<script>
function excludePlayer() {
var homeTeamPlayerId= document.getElementById("homeTeamPlayer").value
// Get all options within <select id='homeTeamPlayer'>...</select>
var op = document.getElementById("awayTeamPlayer").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
// lowercase comparison for case-insensitivity
(op[i].value == homeTeamPlayerId)
? op[i].disabled = true
: op[i].disabled = false ;
}
}
</script>
</head>
<body>
<select id='homeTeamPlayer' onchange="excludePlayer()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select id='awayTeamPlayer'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</html>
Решение SQL с двумя страницами
На первом у вас есть один выпадающий, чтобы выбрать игрока домашней команды.
Созданный HTML должен выглядеть так:
<form method="post" action="page2.php">
<select data-placeholder='Spieler auswählen...' class='chosen-select' style='width:220px;' multiple tabindex='4' name='homespieler' required>
<option ...> ... </option>
<option ...> ... </option>
</select>
<input type=submit />
</form>
На вашей второй странице вы можете получить значение выбранного домашнего игрока, например: $POST_['homespieler']
Вы можете сделать это в своем запросе следующим образом:
SELECT *
FROM $player_table_2016
WHERE active = 1
AND ID != $POST_['homespieler']
ORDER by name ASC