2 回答

TA贡献1725条经验 获得超7个赞
你可以尝试这样的事情,你按 对结果进行排序,然后在PHP中检查用户ID是否在迭代之间发生了变化。当它更改时,关闭上一个块(如果它已打开)并显示新的标题。user_id
当可以避免查询时,您应该避免在循环中进行查询(此解决方案可以避免)!
<div class="test">
<?php
$prev_user = null;
$result = mysqli_query($con, "SELECT *
FROM mugallery_2019 AS m
JOIN users AS u
ON m.author_id = u.user_id
ORDER BY u.user_id") or die(mysqli_error($con));
if (mysqli_num_rows($result)) {
while($row = mysqli_fetch_array($result)) {
$title = $row['title'];
$image = $row['filename'];
$id = $row['id'];
$user_id = $row['user_id'];
$user_name = $row['user_name'];
if ($prev_user !== $user_id) {
if ($prev_user !== null) {
echo '</div>';
}
$prev_user = $user_id;
?>
<div class="user">
<h2><?= $user_name ?></h2>
<?php
} ?>
<div class="thumb">
<a href="display.php?id=<?= $id; ?>"><img src="images/thumbs-square/<?= $image; ?>" alt=""></a>
</div>
<?php
}
echo '</div>';
} ?>
</div>
此外,一些适当的错误处理也不是一个坏主意。如果发生错误,这将向最终用户显示实际的SQL错误,这是不好的。永远不要在实时生产环境中显示错误。

TA贡献1842条经验 获得超21个赞
试试这个:
$users = mysqli_query($con, "SELECT * FROM users") or die(mysqli_error($con));
while($user = mysqli_fetch_array($users)){
$result = mysqli_query($con, "SELECT * FROM mugallery_2019 WHERE author_id = {$user['id']}") or
die(mysqli_error($con));
<h2><?php echo $user['user_name']; ?></h2>
while($item = mysqli_fetch_array($result)){
<div class="thumb">
<a href="display.php?id=<?php echo $item['id']; ?>"><img src="images/thumbs-square/<?php echo $item['filename']; ?>" alt=""></a>
</div>
}
echo "\n</div>";
}
- 2 回答
- 0 关注
- 80 浏览
添加回答
举报