【问题标题】:Table not outputting all columns表未输出所有列
【发布时间】:2015-12-01 23:07:23
【问题描述】:

我对这张非常简单的桌子做了一场噩梦。我正在尝试创建一个草稿类型板。我有用户和玩家。我希望用户显示为<th>,然后每个玩家下有 14 个玩家<td>。有点像这样。。

http://lockerroomfantasysports.com/wp-content/uploads/2013/08/FantasySports-Fantasy-Football-Draft-Board.jpg

但是,我的页面是这样显示的...

它只是为用户创建了两列玩家。而不是每个人一个。它也没有在应有的位置显示数据库内容。显示的玩家应该只在它所在的第一个位置(左侧)。

这是它的代码。

$draft_order_stmt = mysqli_query($con,"SELECT * FROM user_players ORDER BY `id`");
$draft_order_stmt2 = mysqli_query($con,"SELECT username FROM user_players ORDER BY `id`");

?>
<table class="draft_border_table">
    <tr>
        <th class="draft_table_number_th">RND</th>
<?php

while ($draft_user_row = mysqli_fetch_array($draft_order_stmt2)) {

    $username = $draft_user_row['username'];

    echo "<th class='draft_table_th'><div>" . $username . "</div></th>";

}
?>

    </tr>

<?php
for ($count = 1; $count < 15; $count++) { 

$col = "player" . $count; 
$query = "SELECT $col FROM user_players ORDER BY id"; 
$draft_order_stmt2 = mysqli_query($con, $query); 

$draft_order_row = mysqli_fetch_array($draft_order_stmt2); 

echo "<tr><td>" . $count . "</td>"; 

foreach ($draft_order_row as $player) { 

echo "<td><div class=\"draftBorder\">"; 

if (is_null($player)) {

$player = "&nbsp;";

}

echo $player . "</div></td>"; 

} 

echo "</tr>"; 
}
?>
</table>

我最初也尝试过,它显示了所有玩家输入,但玩家输入都在一个块中。像这样……

用户 1 用户 2 用户 3

所有 14 个玩家输入

所有 14 个玩家输入再次

所有 14 个玩家输入再次

等等。

这是我的代码...

$draft_order_stmt = mysqli_query($con,"SELECT * FROM user_players ORDER BY `id`");
$draft_order_stmt2 = mysqli_query($con,"SELECT username FROM user_players ORDER BY `id`");
?>
<table class="draft_border_table">
            <tr>
                <th>Rnd</th>

<?php 
while($draft_username_row = mysqli_fetch_array($draft_order_stmt2)) {
    $username = $draft_username_row['username'];
?>

                <th><?php echo "<div>" . $username . "</div>"; ?></th>
<?php
}
?>
            </tr>
<?php
$count = 1;
while($draft_order_row = mysqli_fetch_array($draft_order_stmt)) {
    $count + 1;
    $player1 = $draft_order_row['player1'];
    $player2 = $draft_order_row['player2'];
    $player3 = $draft_order_row['player3'];
    $player4 = $draft_order_row['player4'];
    $player5 = $draft_order_row['player5'];
    $player6 = $draft_order_row['player6'];
    $player7 = $draft_order_row['player7'];
    $player8 = $draft_order_row['player8'];
    $player9 = $draft_order_row['player9'];
    $player10 = $draft_order_row['player10'];
    $player11 = $draft_order_row['player11'];
    $player12 = $draft_order_row['player12'];
    $player13 = $draft_order_row['player13'];
    $player14 = $draft_order_row['player14'];
?>
            <tr>
                <td><?php echo $count; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player1 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player2 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player3 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player4 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player5 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player6 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player7 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player8 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player9 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player10 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player11 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player12 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player13 . "</div>"; ?></td>

                <td><?php echo "<div class='draftBorder'>" . $player14 . "</div>"; ?></td>
            </tr>

<?php
}
?>
        </table>

有人知道我该如何解决这个问题吗?

【问题讨论】:

  • 看起来您不小心覆盖了$draft_order_stmt2 的内容,因此您丢失了您在第一个脚本的第二行中进行的第二个查询的结果。
  • 这一行? 1$draft_order_stmt2 = mysqli_query($con, $query); 那我还能怎么做呢?
  • 好吧,使用另一个,第三个变量来保存第三个语句的结果。
  • 查看您的代码,这将使每列标题为您的用户的用户名,然后每行标题为用户玩家...这不会将玩家与每个用户相关联。您希望用户名作为第一列,玩家在右边,还是用户名作为列标题,玩家在他们的垂直下方?还有RND列的含义是什么?
  • @DanBelden 我希望将用户名作为列标题,并将与它们关联的玩家垂直放在它们下方。 RND 只是圆形的缩写。这只是一个用户草稿。

标签: php mysql for-loop while-loop html-table


【解决方案1】:
<?php $userPlayerStore = array(); ?>

<table class="draft_border_table">
    <tr>
        <th>Rnd</th>

<?php

// Output usernames as column headings
$userResults = mysqli_query($con, 'SELECT * FROM user_players ORDER BY `id`');
while($userPlayer = mysqli_fetch_array($userResults)) {
    $userPlayerStore[] = $userPlayer;
    echo '<th><div>' . $userPlayer['username'] . '</div></th>';
}

?>

    </tr>

<?php

// Output each user's player 1-14 in each row
$totalPlayerNumbers = 14;
for ($playerNum = 1; $playerNum <= $totalPlayerNumbers; $playerNum++) {
    echo '<tr><td><div class="draftBorder">' . $playerNum . '</div></td>';
    foreach ($userPlayerStore as $userPlayer) {
        echo '<td><div class="draftBorder">' . $userPlayer['player' . $playerNum] . '</div></td>';
    }
    echo '</tr>';
}

?>

</table>

【讨论】:

  • 您好,我不想打扰您,但如果可以,请您看看这个。我试图将播放器回声更改为此...` foreach ($userPlayerStore as $userPlayer) { echo '
    ' 。 $userPlayer['玩家' . '-'。 '位置' 。 $playerNum] 。 '
    ';` .... 我将位置添加到我的数据库中,就像我添加我的玩家一样,所以我想我可以将它添加到回声中,但它会引发未定义的索引错误。知道如何添加吗?
  • 我在这里为它创建了一个新问题...stackoverflow.com/questions/32421942/… ...如果您能提供帮助,我将不胜感激!如果没有,那么我很感激你所做的一切!
猜你喜欢
  • 1970-01-01
  • 2013-01-15
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多