0

我有一张名为 player 的桌子,有 2 列:球员和状态

我需要选择独特的随机团队!每支球队都有 X 名球员:Y 基地和 Z 支点 Y 和 Z 其设定的应有输入形式

如果插入 3 代表基地和 2 代表支点结果应该是 3 支球队或 3 名球员:

团队 1 基地 1 支点 1 支点 2

团队 2 基地 1 支点 1 支点 2

队 3 基地 1 支点 1 支点 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();
4

1 回答 1

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

旁注:

  1. 考虑重写整个循环。它可以在一个while循环和一个光标/标志中完成 - 让它成为一个家庭作业:)
  2. 小心 SQL 注入
  3. 您可以包装SELECTUPDATE在事务中避免不一致和冲突
于 2013-11-05T13:43:26.680 回答