我正在尝试整理一个工具,以帮助我即将到来的幻想曲棍球草案,同时也学习PHP。我试图在一个页面上创建多个列表,一个显示前10个可用的整体玩家,然后是其他按位置显示前十个可用玩家的列表。
这是我的SQL查询/代码
include 'db/connect.php';
$sql='SELECT * FROM players WHERE pick IS NULL';
$players=$conn->query($sql);
if($players === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
$rows_returned = $players->num_rows;
}
然后在页面后面我有一个while循环,它生成一个包含前十名玩家的表
while ($row = $players->fetch_array()) {
if ($i == 10) {
break;
}
echo "<tr>";
echo "<td>" . $row['Rank'] . "</td>";
echo "<td>" . $row['Player'] . "</td>";
echo "<td>" . $row['Team'] . "</td>";
...
一切正常。但是,当我使用相同的方法生成仅包含特定位置(C,RW / LW等等)的列表时,它会从前10名玩家列表结束的位置开始。 (请参阅我的意思:http://i.imgur.com/JApeftU.png)
我认为这与$players->fetch_array()
有关但是我不知道绕过它最好的方法是什么。
有什么想法吗? 谢谢!
答案 0 :(得分:6)
与所有玩家一起填充行。
while ($row = $players->fetch_array()) { //→ $rows = $players->fetch_all();
$rows[] = $row;
}
您可以使用count()
来获取数组中玩家的总数
$totalPlayers = count($rows);
现在您可以使用for循环遍历数组
for($i = 0; $i < $totalPlayers; $i++){
//echo out the stuff you want
echo $rows[$i]['player'];
}
或者只有十个
for($i = 0; $i < 10; $i++){
//echo out the stuff you want
echo $rows[$i]['player'];
}
答案 1 :(得分:0)
嗯,对于未来的游客,被误导性的标题所吸引,另一个答案是可以的。
虽然对你个人而言,另一个答案以及你的问题是错误的。
首先,您对使用数据库的想法是错误的。
数据库不像文本文件,但您必须每次从第一行到最后一行读取。数据库非常智能,旨在为您返回所请求的数据。
以这种方式思考:如果你的联盟将成长为雇佣数千名球员,那该怎么办?当它只需要一百个玩家时,它会给PHP脚本带来许多无用的信息。
因此,您似乎需要不同的查询来获取不同的数据集。首先,您需要一个查询
brew install git
要获得前十名,SELECT * FROM players WHERE pick IS NULL ORDER BY field DESC LIMIT 10
是您用来确定&#34; top&#34;播放器。然后是几个查询,每个查询都会让玩家获得某个位置。
field