gpt4 book ai didi

php - 如何使用php查看文件中的第一张图片?

转载 作者:行者123 更新时间:2023-11-29 02:31:57 25 4
gpt4 key购买 nike

您好,我想弄清楚如何显示用户上传的相册中的第一张图片。我有一个允许用户将图像上传到相册的网站,现在我想将相册中的第一张图片显示为相册封面,现在当用户点击相册页面时,所有显示的都是相册信息,如名称、描述、等等,我使用相册名称作为链接来查看相册中的图像,我想要的是相册中的第一张图像显示为该相册的链接。我有很多事情要做,但我会尽力提供所有内容,以便您更容易理解。这是我的相册页面代码:

$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>] ';
}
}

最佳答案

您实际上非常接近通过现有查询获得第一张图片。您只需将图像名称或路径添加到 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>';
}

关于php - 如何使用php查看文件中的第一张图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com