选择球员作为球队并在数据库中标记为选中

时间:2013-11-05 13:25:22

标签: php sql multiple-select

我有一个名为玩家的桌子有2列:玩家和状态

我需要选择独特的随机团队! 每支球队都有X球员:Y base和Z pivot Y和Z设置了应有的输入形式

如果在插入3中用于基础,2用于枢轴结果应该是3个团队或3个玩家:

第1组 基地1 枢轴1 Pivot 2

团队2 基地1 枢轴1 Pivot 2

第3组 基地1 枢轴1 Pivot 2

生成团队后,我必须能够将状态设置为“已选中”。如果我需要创建另一个团队,所有状态为“已选中”的用户将无法在另一个新团队中使用!

我目前使用:

    $nteams=$_POST['teams']; 
    $nbase=$_POST['base'];
    $npivots=$_POST['pivots']; 
    $allplayers=$nteams*($nbase+$npivots);
    require_once "connect_to_mysql.php"; 
    $sqlCommand = "SELECT id FROM players ORDER BY RAND() LIMIT $allplayers";
    $query = mysql_query($sqlCommand) or die (mysql_error()); 
    if(mysql_num_rows($query)<$allplayers) // sanity
      die('Not enough players!');
    else
      for($team=1;$team<=$nteams;$team++)
        {
        for($base=1;$base<=$nbase;$base++)
          {
          $row = mysql_fetch_array($query);
          echo "Team $team Base $base = {$row['id']}<br />";
          }
        for($pivot=1;$pivot<=$npivots;$pivot++)
          {
          $row = mysql_fetch_array($query);
          echo "Team $team Pivot $pivot  = {$row['id']}<br />";
          }
        }
    mysql_close();

1 个答案:

答案 0 :(得分:1)

  1. WHERE status<>'selected'添加到您的$sqlCommand声明
  2. 将数据库中的所有读取ID存储在一个数组中,例如$selectedIds
  3. 运行更新脚本UPDATE players SET status='selected' WHERE id IN ('.implode(',', $selectedIds).')
  4. 附注:

    1. 考虑重写整个循环。它可以在一个while循环和一个游标/标志中完成 - 让它成为一个功课:)
    2. 小心SQL注入
    3. 您可以在事务中包含SELECTUPDATE以避免不一致和冲突