php - 从 MySQL 到 HTML 表格的坐标(PHP、PDO、MySQL)

标签 php html mysql pdo

我正在创建使用 MySQL 数据库创建“运动场”的游戏。

在我的 MySQL 表中,我有两列 pointXpointY , 两者 INT .我也可以使用 POINT ,但就我而言,这两列是更好的解决方案。

| id | pointX | pointY | player | game |
|----|--------|--------|--------|------|
| 1  | -2     | 1      | 7      | 10   |
| 2  | -3     | 2      | 5      | 10   |
| 3  | 2      | -2     | 2      | 10   |
| 4  | -2     | -1     | 1      | 10   |

我应该从这个 MySQL 表生成 HTML 表。像这样,但没有坐标 header (下面只是为了更容易理解):

|-----|----|----|----|----|----|----|
| Y/X | -3 | -2 | -1 | 0  | 1  | 2  |
|-----|----|----|----|----|----|----|
| -2  |    |    |    |    |    | 2  |
|-----|----|----|----|----|----|----|
| -1  |    | 1  |    |    |    |    |
|-----|----|----|----|----|----|----|
| 0   |    |    |    |    |    |    |
|-----|----|----|----|----|----|----|
| 1   |    | 7  |    |    |    |    |
|-----|----|----|----|----|----|----|
| 2   | 5  |    |    |    |    |    |
|-----|----|----|----|----|----|----|

加上.. 每<td>应该有属性 data-cell , 其中包括坐标,例如 data-cell="-2x-1" .

开始的最佳方式是什么?

最佳答案

$rng = $dbh->prepare('
  SELECT   MIN(pointX) AS minX, MIN(pointY) AS minY,
           MAX(pointX) AS maxX, MAX(pointY) AS maxY
  FROM     field
  WHERE    game = ?
  LOCK IN SHARE MODE
');
$qry = $dbh->prepare('
  SELECT   pointX, pointY, player
  FROM     field
  WHERE    game = ?
  ORDER BY pointX, pointY
');
$dbh->beginTransaction();
$rng->execute([$game_id]);
$qry->execute([$game_id]);
$dbh->rollBack();

$limits = $rng->fetch();
$player = $qry->fetch();
echo '<table>';
for ($y = $limits['minY']; $y <= $limits['maxY']; $y++) {
  echo '<tr>';
  for ($x = $limits['minX']; $x <= $limits['maxX']; $x++) {
    printf('<td data-cell="%dx%+dy">', $x, $y);
    if ($player and $player['pointX'] == $x and $player['pointY'] == $y) {
      echo htmlentities($player['player']);
      $player = $qry->fetch();
    } else {
      echo '&nbsp;';
    }
    echo '</td>';
  }
  echo '</tr>';
}
echo '</table>';

关于php - 从 MySQL 到 HTML 表格的坐标(PHP、PDO、MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504153/

相关文章:

mysql - 'group by' 适用于 MySQL,但不适用于 Oracle

php - 在 Contact Form 7 生成的 html 中添加 html 元素

php - 我的 expires、cache-control 和 pragma HTTP 请求 header 字段应该设置什么?

PHP和CHMOD问题

php - 使用用户的正则表达式安全吗?

jquery - 我怎样才能使一个 Div 保持在它的位置上?

php - 如何隐藏php代码和mysql表模式

php - 使用用户输入连接 2 个表

javascript - 如何在包含多个元素的 div 上添加点击事件

html - 如何在ruby中设计自动邮件格式