0

画像ギャラリーを作ろうとしています。画像が入ったアルバムがあります。インデックスページに魔女のアルバムを表示したいので、クリックするとそのアルバムに移動します。アルバム名を表示することはできますが、ランダムな機能を使用して、そのアルバム内の画像とともにこれらのアルバムを表示したいと思います。私がやりたいことをご理解いただければ幸いです。問題は、画像に到達できないことです。

2つの連想配列があります。1つはアルバム用、もう1つは画像用です。アルバム用のものは次のようになります。

function get_albums() {
$albums = array();

$albums_query = mysql_query("
SELECT `albums`.`album_id`, `albums`.`timestamp`, `albums`.`name`,     
LEFT(`albums`.`description`, 50) as `description`, COUNT(`images`.`image_id`) as `image_count`
FROM `albums`
LEFT JOIN `images`
ON `albums`.`album_id` = `images`.`album_id`
GROUP BY `albums`.`album_id`
")or die(mysql_error());

while ($albums_row = mysql_fetch_assoc($albums_query)) {
    $albums[] = array(
        'id' => $albums_row['album_id'],
        'timestamp' => $albums_row['timestamp'],
        'name' => $albums_row['name'],
        'description' => $albums_row['description'],
        'count' => $albums_row['image_count']       
        );
}

return $albums;
}

そして、画像の場合は次のようになります。

function get_images($album_id) {
$album_id = (int)$album_id;

$images = array();

$image_query = mysql_query("SELECT `image_id`, `image_name`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id");
while ($images_row = mysql_fetch_assoc($image_query)) {
    echo $images_row['image_id'];

    $images[] = array(
    'id' => $images_row['image_id'],
    'img_name' => $images_row['image_name'],
    'album' => $images_row['album_id'],
    'timestamp' => $images_row['timestamp'],
    'ext' => $images_row['ext']
    );
}
return $images;
}

get_albums関数では、左結合関数を使用して、このように画像名と拡張子を追加することで画像に到達できると思いました。

while ($albums_row = mysql_fetch_assoc($albums_query)) {
    $albums[] = array(
        'id' => $albums_row['album_id'],
        'timestamp' => $albums_row['timestamp'],
        'name' => $albums_row['name'],
        'description' => $albums_row['description'],
        'count' => $albums_row['image_count'],
        'img_name' => $albums_row['image_name'],
        'ext' => $albums_row['ext']         
        );   

そして、このようにインデックスページでそれを使用します。

$albums = get_albums();

if (isset($albums)) {
foreach ($albums as $album) {
    echo '<a href="view_album.php?album_id=', $album["id"], '"><img src="uploads/thumbs/', $album["id"] ,'/', $album['img_name'],'.', $album["ext"],'" />', $album['name'], '</a>';
}
}

しかし、結果はこれです。 http://www.robcnossen.nl/

私は何が間違っているのですか?

4

1 に答える 1

0

最初にすべてのデータを結合してから、次のように表示する 1 つの大きなクエリを作成してみませんか。

sql="SELECT * FROM albums a INNER JOIN images i ON a.album_id = i.album_id WHERE a.album_id =" . $album_id;

$result = mysql_query(sql);

while ($row = mysql_fetch_array($result))  {
     echo '<a href="view_album.php?album_id=' . $row['album_id'] . '><img src="uploads/thumbs/' . $row['album_id'] . '/' . $row['album_id'] . '.' . $row['album_ext'] . '" />' . $row['album_name'] . '</a>';
}

次に、希望どおりに正確に表示する必要があります

于 2013-03-19T23:01:51.403 に答える