2

さて、私は私の質問(下記)への答えを求めて、しばらくの間、ウェブとスタックオーバーフローを調べてきましたが、私が見つけたほとんどすべての説明やトピックは、私には複雑すぎるか、対応していません.私の特定のニーズに...

要するに、私は多数の POST を出力するブログを持っています。各 POST には複数の IMAGES が含まれています。POST には、TITLE、DESCRIPTION、POST DATE などのデータが含まれています。これらはtbl_blogという 1 つのテーブルに含まれています。IMAGES は、 tbl_blog_imgsという独自のテーブルに属しています。

現在、私のコードは「機能」していますが、ブログ投稿の ID に一致する画像を含む1 つのブログ投稿しか表示されません。( tbl_blog_imgsには、 tbl_blogの各エントリの ID と一致する blog_key という行があります)

問題は当然、複数のブログ投稿があり、1 つだけが投稿されているように見えることです...

私のコード...

<?php

require('myownsecretfile.php');

$sql = "SELECT blog_id, blog_title, blog_desc, date_format(blog_post_date,'%d/%m/%Y') as blog_post_date ";
$sql .= "FROM tbl_blog ";

$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
    $blog_id = $row['blog_id']; 
    $blog_title = $row['blog_title']; 
    $blog_desc = $row['blog_desc'];
    $blog_post_date = $row['blog_post_date'];       

    ?>

    <div class="blog-title"><a href="blog_more.php?blog_title=<?php echo $blog_title; ?>"><?php echo $blog_title; ?></a>
    <p class="blog-post-date-style">-&nbsp;<?php echo $blog_post_date; ?>&nbsp;-</p>
    <br>
    <div class="blog-desc">
    <p class="blog-description-style"><?php echo $blog_desc; ?></p>
    </div>
    </div>
    <br>

    <?php

    $sql = "SELECT * ";
    $sql .= "FROM tbl_blog_imgs ";
    $sql .= "WHERE blog_img_key='$blog_id' ";

    $result = mysql_query($sql);

    while($row = mysql_fetch_assoc($result)) {
        $blog_img_key = $row['blog_img_key'];   
        $blog_img_path = $row['blog_img_path']; 
        $blog_img_alt = $row['blog_img_alt'];
        $blog_img_title = $row['blog_img_title'];       

        ?>

        <img src="images/blog/<?php echo $blog_img_path; ?>" alt="<?php echo $blog_img_alt; ?>" title="<?php echo $blog_img_title; ?>"><br>


        <?php
    }
}   
?>

INNER JOIN を実行する必要がありますか? そうでない場合、ループ内でループを実現する最もスマートで効率的な方法は何でしょうか...

4

1 に答える 1

1

$result両方のクエリに同じ変数を使用しています。したがって、最初のブログのすべての画像の表示が終了し、外側のループの先頭に戻ると、

$row = mysql_fetch_assoc($result);

ただし$result、ブログ クエリではなく、画像クエリの結果が含まれるようになりました。そして、そのクエリはすべての行を返しfalseたので、これは を返し、外側のループは終了します。

$result_blogそれらをandに変更する$result_imgと、問題は解決するはずです。

$rowまた、両方のループに同じ変数を使用するのも混乱を招きます。この場合、これらの配列の要素に変数をすぐに設定するため、問題は発生しません。しかし、それは悪い習慣なので、名前も変更することをお勧めします。

于 2013-09-18T11:25:29.747 に答える