[英]Make everything page representing data from different tables in different html structure
我想在我的網站上創建一個“一切”頁面,其中將顯示所有用戶活動。 因此,我需要從兩個表“ images”和“ user_favorites”中制作sql並將其全部輸出到此html設計中
我的表結構:
使用者
id
圖片
id
user_id
image
description
date
user_favorites
id
date
我有這個SQL查詢
function users_everything($user_id)
{
$sql = "SELECT
i.description as text,
UNIX_TIMESTAMP(i.date) as image_date,
COALESCE ( imgcount.cnt, 0 ) as comments,
fav.id as favorite_id,
r.image as favorited_image,
u2.username as favorite_user,
t.image as favorite_user_image
FROM users u
LEFT JOIN images i ON i.user_id = u.id
LEFT JOIN images p ON p.id = (SELECT b.id FROM images AS b where u.id = b.user_id ORDER BY b.id DESC LIMIT 1)
LEFT JOIN (SELECT image_id, COUNT(*) as cnt FROM commentaries GROUP BY image_id ) imgcount ON i.id = imgcount.image_id
LEFT JOIN user_favorites fav ON fav.user_id = u.id
LEFT JOIN images r ON r.id = fav.image_id
LEFT JOIN users u2 ON u2.id = r.user_id
LEFT JOIN images t ON t.id = (SELECT b.id FROM images AS b where u2.id = b.user_id ORDER BY b.id DESC LIMIT 1)
WHERE i.user_id = ?
";
$query = $this->db->query($sql, $user_id);
return $query->result_array();
}
我的“圖像”表有1條記錄,“ user_follow”有2條記錄,但是如果我這樣做,它將返回兩個收藏夾,並且復制了兩個圖像(圖像)。
我不會像所有頁面那樣制作東西,然后再將不同頁面的數據呈現給不同的html結構。 我想你有經驗,可以幫助我
您需要將平面記錄數組轉換為樹結構,其中每個圖像都包含一個收藏夾列表。 就像是:
$images = array();
foreach($everything_list as $item)
{
// Check to see if already encountered this image
$imageId = $item['image_id'];
if (!isset($images[$imageId]))
{
// New image
$image = array();
// Do this for each image attribute
$image['image_id'] = $item['image_id'];
$image['favorites'] = array();
$images[$imageId] = $image;
}
// Add Favorite
$favorite = array();
// Do this for each favorite attribute
$favorite['favorite_id'] = $item['favorite_id'];
$images[$imageId]['favorites'][] = $favorite;
}
print_r($images);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.