0

好的,所以我的 SQL 查询是:

$image_results = $wpdb->get_results('SELECT * FROM uploaded_images GROUP BY album_title') ;

我现在要做的是为每个不同的 *album_title* 输出一组不同的结果,在标签中输出专辑标题,然后显示具有该专辑标题的项目列表。

这是我到目前为止所拥有的:

<?php foreach ($image_results as $result => $coll):?>
    <h4><?php echo $coll->album_title;?></h4>
    <?php foreach ( $coll->file_name as $i => $row ) : ?>
         <p><img src="http://example.com/<?php echo  $row->file_name; ?>"/></p>
    <?php endforeach; ?>
<?php endforeach; ?>
4

2 回答 2

1

在您的问题更新后,我认为这就是您正在寻找的。请注意,我使用ORDER BY了而不是GROUP BY. SUM当使用,AVG或其他聚合函数时使用分组。这可以在一个循环中全部处理:

$image_results = $wpdb->get_results('SELECT * FROM uploaded_images ORDER BY album_title');
$curTitle = '';
foreach($image_results as $result => $col) {
    if($curTitle !== $col['album_title']) {
        $curTitle = $col['album_title'];
        echo "<h4>$curTitle</h4>";
    }
    echo '<p><img src="' . $col['file_name'] . '" /></p>';
}
于 2012-12-10T21:49:48.860 回答
0

简单的方法:

$album_titles = array();
$image_results = $wpdb->get_results('SELECT * FROM uploaded_images GROUP BY album_title') ; 
foreach ($image_results as $result){
   $album_titles[ $result['album_title'] ][] = $result;
}

foreach( $album_titles as $title -> $images ){
 echo "<h4>".$title."</h4>";
   foreach( $images as $image ){
      echo "<br/>".$image['file_name'];
   }
}

所以你选择它,制作一个标题数组并输出具有相同标题的所有内容。

于 2012-12-10T21:41:45.570 回答