【发布时间】:2017-02-07 00:51:03
【问题描述】:
我有一个'地图'之类的东西我正在做的事情。我画出每个图块,然后检查数据库以查看是否有人位于该图块处。
代码有效,但仅适用于数据库中的第一个结果。
谁能帮忙。非常感谢。
$sqlw = "SELECT id, player_coord_x, player_coord_y FROM player_game WHERE world_id='$world'";
$world_result = $player_stat->query($sqlw);
?>
<div class='map-grid'>
<?
$id = '';
$size = 16;
for($i = 1; $i <= $size; $i++) {
echo "<div class='map-grid-row'>";
for ($j=1; $j <= $size; $j++) {
// check for player at location
if ($world_result->num_rows > 0) {
while($w_row = $world_result->fetch_assoc()) {
$player_coord_x = $w_row['player_coord_x'];
$player_coord_y = $w_row['player_coord_y'];
$id = $w_row['id'];
}
}
if ($player_coord_x == $i and $player_coord_y == $j){
echo "<div class='map-grid-cell high'>";
echo "XXX";
echo "</div>";
}else{
echo "<div class='map-grid-cell high'>";
echo "<span class=\"map-small\">(x-$i y-$j)</span>";
echo "</div>";
}
}
echo "</div>";
}
?>
</div>
【问题讨论】:
-
使用数组,而不是变量。
$player_coord_x只会有最后一条记录。使用$player_coord_x[]。 -
... 或在
fetch_assoc循环内进行所有处理。 -
我根据你的信息尝试了一些方法,但我可以让它工作,你介意给我更多的例子吗
-
你在用
for循环什么? -
我正在创建一个 div 网格,当前为 16x16,每个 div 在我要检查数据库的每个 div 上都有一个值,即 $i 和 $j(或我的数据库中的 x 和 y)对于任何包含相同值的记录,因此如果 $i 和 x 的值匹配并且 $j 和 y 的值匹配,那么我只是简单地回显一个 XX 进行测试。我希望你能理解这一点