2

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
            }
    }

?>
4

1 に答える 1

1

2番目の解決策の方が優れていて簡単だと思います。あなたはこれを次のように行うことができます:

アップデート:

  <?php
$all_cats=mysql_query("select * from categories");
while($all_cat = mysql_fetch_array($all_cats)){
    //print your cat title 
    $check = mysql_query("select * from images i, pages p, page_content pc categories c where c.id = p.category and p.id = pc.page_id and pc.image_id=i.id");

    if(mysql_num_rows($check) > 0){

    $all_pages=mysql_query("select * from pages where category=".$all_cat['id']);
    while($all_page = mysql_fetch_array($all_pages)){
        //print your page
        echo "<p>".$all_page['page_name']."</p>";
        ?>
        <div class="admin-images-block clearfix">
            <?php

            $all_images=mysql_query("select * from images where id=".$all_page['image_id']);
            while($all_image = mysql_fetch_array($all_images)) {
            //print your img
            ?>
                <img src="<?=$all_image['thumb_path']?>" alt="<?=$all_image['title']?>"/>
            <?php}?>
         </div>
    <?php
    }

    }
}
?>

幸運を祈ります:)

于 2012-11-18T11:47:18.467 に答える