0

前/次に関する多くの投稿を読みましたが、まだ非常に行き詰まっています。

画像と関連データを表示するページがあります。これはデータベースから取得されます。画像は、アルバムごとのフォルダー内の Web サイト フォルダー内にあります。したがって、画像フォルダには 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 ごとに正しい画像とデータが表示されます。Site/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 に答える