[英]one player table - two team dropdowns - how to get no double players (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>";
问题是,如果已经为主队选择了一名球员,我无法检查客队选择。 在客场球队中选择那些不属于主队的球员会很棒。
这怎么可能?
一页的Javascript解决方案
选择家庭播放器后,您需要触发一个事件,将播放器从第二个下拉列表中排除。 例如,您可以使用JavaScript执行此操作。
在您的选择中添加如下ID:
<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中的值禁用<select>中的<option>? )
您还应该为第二个下拉列表实现此功能。
<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
您可以将ajax用于此类方案。 一旦用户选择主队的所有队员使用jQuerys .blur
事件并将所有id传递给php。 并且你可以使用查询select * from table where id not in ($id)
,其中$ id是通过POST或GET方法接收的值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.