0

我已经阅读了许多关于上一个/下一个的帖子,但我仍然很困惑。

我有一个显示图像和相关数据的页面。这是从数据库中获得的。图像位于每个专辑文件夹中的网站文件夹中。因此,一个图像文件夹可能包含 1、2 或 100 张图像。

对于这些数据,我有如下功能:-

function get_images_album($artist_id) {
    $artist_id = (int)$artist_id;
    $images = array();
    $image_query = mysql_query("SELECT `image_album_id`, `member_id`, `artist_id`,     
                   `albumname`, `ext`, `timestamp`  FROM `album_images`
                   WHERE `artist_id`=$artist_id AND `member_id`=".$_SESSION['member_id']);
    while ($images_row = mysql_fetch_assoc($image_query)) {
        $images[] = array(
            'id' => $images_row['image_album_id'],
            'album' =>  $images_row['artist_id'],
            'albumname' => $images_row['albumname'],
            'ext' => $images_row['ext'],
            'timestamp' => $images_row['timestamp']
            );
    }
    return $images;
}

该页面根据 localhost 上的 url 显示正确的图像和数据。网站/album_view.php?artist_id=4&image_album_id=4。

在html页面上的代码是: -

 $images = get_images_album($artist_id);
 if (empty($images)) {
     echo 'There are no Images in this album.';
 }else{
     foreach ($images as $key => $val) {

     }
 }

?>

我已经明白,如果我回显 $key 和 current($val) 我会得到数组索引号。和当前页面的图像 ID。在上述情况下,这将是 0 和 4。但是,我总是得到数组的最后一个索引详细信息,对于特定专辑,恰好是 13 和 2181。

我知道所有数据都在那里,因为我已经回显了数组并且一切看起来都很好。

我不知道为什么。

从我所拥有的继续我无法弄清楚如何继续进行下一个和以前的设置谢谢。

4

1 回答 1

0

get_images_album解决此问题的更简单方法可能是稍微更改您的功能:

function get_images_album($artist_id) {
  $artist_id = (int)$artist_id;
  $images = array();
  $image_query = mysql_query("SELECT `image_album_id`, `member_id`, `artist_id`,     
                   `albumname`, `ext`, `timestamp`  FROM `album_images`
  WHERE `artist_id`=$artist_id AND `member_id`=".$_SESSION['member_id']);
  While ($images_row = mysql_fetch_assoc($image_query)) {
   // $images[] = array(
   // instead, make your images array a hash and key it on the album_id
    $images[$images_row["image_album_id"]] = array(
      'id' => $images_row['image_album_id'],
      'album' =>  $images_row['artist_id'],
      'albumname' => $images_row['albumname'],
      'ext' => $images_row['ext'],
      'timestamp' => $images_row['timestamp']
     );
   }
   return $images;
 }

现在您可以消除foreach循环并获得您正在寻找的专辑:

 $images = get_images_album($artist_id);
 if (empty($images)) {
 echo 'There are no Images in this album.';
 }else{
  $album_images = $images[$image_album_id];

  // do stuff with the $album_images hash
  var_dump($album_images);

 }
于 2012-10-02T01:24:30.270 回答