嗨,我正在尝试弄清楚如何显示用户上传的相册中的第一张图像。我有一个网站,让用户上传图像到相册,现在我想显示相册中的第一张图片作为相册封面,现在当用户点击相册页面时,所有显示的都是相册信息,如名称,描述等,我使用相册名称作为链接来查看相册中的图像,我想要的是相册中的第一张图像显示为该相册的链接。我有很多东西正在与此,但我会尝试并提供一切,以便您可以更容易地理解。这是我的相册页面代码:
$albums = get_albums();
if(empty($albums)){
echo 'No Albums';
}else{
foreach($albums as $album){
echo '<p><a href="view_album.php?album_id=', $album['id'] ,'">', $album['name'],'</a>(', $album['count'], ' images) <br />
', $album['description'], '...<br />
<a href="edit_album.php?album_id=', $album['id'] , '">Edit</a> / <a href="delete_album.php?album_id=', $album['id'] , '">Delete</a>
</p>';
}
}下面是我的函数php文件中的函数,我将其包含在此文件中:
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`
WHERE `albums`.`user_id` = " . $_SESSION['user_id'] . "
GROUP BY `albums`.`album_id`
");
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;
}现在我有点迷茫,不知道该怎么做才能将打开相册的链接从相册名称切换到相册中的第一张图片。如果相册中没有任何图片,我计划使用一个简单的If语句来显示一个通用的空文件夹图像。我的数据库使用两个表来上传图片,第一个是相册表,第二个是图片表。我还有一个插入图像上传时间戳的时间戳字段,所以我可以返回该相册中的图像和时间戳最低的图像,以便返回上传到相册的第一张图像吗?有没有一条SELECT语句来返回它?此外,我还创建了一个文件夹,将这些图像存储在相应的相册中,我可以返回该相册中的第一张图像吗?实现这一目标的最简单方法是什么?
下面是获取镜像路径的方法:
function get_images($album_id){
$album_id = (int)$album_id;
$images = array();
$image_query = mysql_query("SELECT `image_id`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id` = $album_id AND `user_id` = ". $_SESSION['user_id']);
while($images_row = mysql_fetch_assoc($image_query)){
$images[] = array(
'id' => $images_row['image_id'],
'album' => $images_row['album_id'],
'timestamp' => $images_row['timestamp'],
'ext' => $images_row['ext']
);
}
return $images;
}这是我的view_album.php文件:
if(!isset($_GET['album_id']) || empty($_GET['album_id']) || album_check($_GET['album_id']) === false){
header('Location: albums.php');
exit();
}
$album_id = $_GET['album_id'];
$album_data = album_data($album_id, 'name');
echo '<h1 class="logo2">', $album_data['name'], '</h1>';
include 'includes/menu_album.php';
$images = get_images($album_id);
if(empty($images)){
echo 'No images.';
}else{
foreach($images as $image){
echo '<a href="uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="Uploaded ', date('D M Y', $image['timestamp']), '"></a> [<a href="delete_image.php?image_id=', $image['id'], '">x</a>] ';
}
}发布于 2012-07-31 09:28:44
实际上,您已经非常接近使用现有查询获取第一张图像了。您需要做的就是将镜像名称或路径添加到SELECT,并将镜像时间戳添加到ORDER BY,以确保您获得最早的时间戳:
$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`,
CONCAT(`images`.`image_id`, '.', `images`.`ext`) AS `first_image`
FROM `albums`
LEFT JOIN `images`
ON `albums`.`album_id` = `images`.`album_id`
WHERE `albums`.`user_id` = " . $_SESSION['user_id'] . "
GROUP BY `albums`.`album_id`
ORDER BY `albums`.`timestamp` ASC, `images`.`timestamp` ASC
");
if (!$albums_query) {
die('Invalid query: ' . 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'],
'image' => $albums_row['first_image']
);
}然后,您可以更新您的输出以包括图像:
foreach($albums as $album){
if (empty($album['image'])) {
$album['image'] = 'default.jpg';
}
echo '<p>
<a href="view_album.php?album_id=', $album['id'] ,'">
<img src="uploads/thumbs/', $album['id'] ,'/', $album['image'] ,'" />', $album['name'],'
</a>(', $album['count'], ' images) <br />
', $album['description'], '...<br />
<a href="edit_album.php?album_id=', $album['id'] , '">Edit</a> / <a href="delete_album.php?album_id=', $album['id'] , '">Delete</a>
</p>';
}https://stackoverflow.com/questions/11731150
复制相似问题