один игровой стол — два выпадающих списка команд — как получить двойных игроков (mysql, php, ajax)

У меня есть один игровой стол, где хранятся все игроки.
Когда я выберу игроков для домашней команды и команды гостей. У меня есть два разных запроса 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>";

Проблема в том, что я не могу проверить в выборе команды гостей, если игрок уже выбран для домашней команды. Было бы здорово выбрать в составе гостей только тех игроков, которых нет в составе хозяев.

Как это может быть возможным?

5

Решение

Вы можете использовать ajax для таких сценариев.
Как только пользователь выберет всех игроков для домашней команды, используйте jQuerys .blur событие и передать все идентификаторы в php.
И чем вы можете использовать запрос
select * from table where id not in ($id) где $ id — это значение, полученное методом POST или GET

1

Другие решения

Решение 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
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector