2 回答

TA貢獻1725條經驗 獲得超8個贊
你可以嘗試這樣的事情,你按 對結果進行排序,然后在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 關注
- 88 瀏覽
添加回答
舉報