4つのテーブルを結合していて、さまざまなカテゴリの下にネストされた結果を吐き出すwhileループを作成したいと思います。
私のテーブル
カテゴリ
ID| 種別名
ページ
ID| page_name | カテゴリー
page_content
id | page_id | image_id
画像
ID| thumb_path
現在のSQL結合
<?php $all_photos = mysql_query("
SELECT * FROM categories JOIN pages ON pages.category = categories.id
JOIN image_pages ON image_pages.page_id = pages.id
JOIN images ON images.id = image_pages.image_id
");?>
whileループから欲しい結果
こんなものを手に入れたい…。
カテゴリ1
ページ1
画像1、画像2、画像3
2ページ
画像2、画像4
カテゴリ2
ページ3
画像1
4ページ
画像1、画像2、画像3
各画像は複数のページに分類でき、各ページは複数のカテゴリに分類できます。
現在、私は2つの解決策を持っています。1つは、その中のページ数に応じて各カテゴリを数回リストします。
例えば。カテゴリ1、ページ1、画像1-カテゴリ1、ページ1、画像2など
別のwhileループ内でwhileループを使用するもので、別のwhileループ内で3つのSQLクエリが生成されます。
<?php $all_categories = mysql_query("SELECT * FROM categories");?>
<?php
while($all_category = mysql_fetch_array($all_categories)) {
?>
<h4><?=$all_category['category_name']?></h4>
<?php $all_pages = mysql_query("SELECT * FROM pages WHERE category = " . $all_category['id'] . "");?>
<?php
while($all_page = mysql_fetch_array($all_pages)) {
?>
<p><?=$all_page['page_name']?></p>
<?php $all_images = mysql_query("SELECT * FROM images JOIN image_pages ON image_pages.page_id = " . $all_page['id'] . " AND image_pages.image_id = images.id");
?>
<div class="admin-images-block clearfix">
<?php
while($all_image = mysql_fetch_array($all_images)) {
?>
<img src="<?=$all_image['thumb_path']?>" alt="<?=$all_image['title']?>"/>
<?php
}
?>
</div>
<?php
}
}
?>