繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM