一个玩家表 - 两个团队下拉列表 - 如何获得没有双重玩家(mysql,php,ajax)

时间:2015-12-13 09:20:33

标签: php mysql dropdown

我有一个玩家桌子,所有玩家都存放在其中。 当我将为主队和客队选择球员时。我在播放器表上有两个不同的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>"; 

问题是,如果已经为主队选择了一名球员,我无法检查客队选择。在客场球队中选择那些不属于主队的球员会很棒。

这怎么可能?

2 个答案:

答案 0 :(得分:1)

一页的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 ;
    }
}

(从此复制禁用代码:How can I disable an <option> in a <select> based on its value in JavaScript?

您还应该为第二次下拉菜单实现此功能。

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

有两页的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 :(得分:1)

您可以将ajax用于此类方案。 一旦用户选择主队的所有队员使用jQuerys .blur事件并将所有id传递给php。 而且你可以使用查询 select * from table where id not in ($id)其中$ id是通过POST或GET方法接收的值