PHP While循环将多个'Joined'表中的唯一类别分开

时间:2012-11-18 10:49:47

标签: php mysql join while-loop

我正在加入4个表,并希望创建一个while循环,它会将嵌套在不同类别下的结果吐出来。

我的表格

类别
id | CATEGORY_NAME


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页 image 1

第4页
图像1,图像2,图像3

每个图片都可以归入多个页面,每个页面可以归入多个类别。

目前我有两个解决方案,一个根据其中的页面数量多次列出每个类别:

例如。类别1,第1页,图像1 - 类别1,第1页,图像2等

在另一个循环中使用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
            }
    }

?>

1 个答案:

答案 0 :(得分:1)

我认为第二种解决方案更好,更直接。 你可以这样做:

更新

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

    }
}
?>

祝你好运:)