首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:如果指定的图像不存在,如何显示默认图像?

PHP:如果指定的图像不存在,如何显示默认图像?
EN

Stack Overflow用户
提问于 2012-03-23 02:14:32
回答 6查看 17.4K关注 0票数 1

我正在做一个小项目,我需要为我的数据库中的每个作者显示作者的图像。查看下面的代码:

--查询--

代码语言:javascript
复制
$getboth_sql = mysql_query(

"SELECT lyrics.lyrics_id, lyrics.lyrics_title, lyrics.lyrics_text,artists.artist_nane,artists.artist_id
FROM lyrics,artists
WHERE lyrics.artist_id = artists.artist_id
ORDER BY lyrics.lyrics_title");

while ($both = mysql_fetch_assoc($getboth_sql)) {

    $lyrics_id = $both[lyrics_id];
    $lyrics_title = $both[lyrics_title];
    $lyrics_text = $both[lyrics_text];
    $artist_name = $both[artist_nane];
    $artist_id = $both[artist_id];

    ?>
    <div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg"  height="50px" width="50px"/></div>        



    <?php
}//END While

上面的代码可以工作,但如果我没有在“艺术家”目录中保存一个图像,则不会显示该艺术家的图像。

代码语言:javascript
复制
<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg"  height="50px" width="50px"/></div>

问题:如果找不到指定的on,那么显示默认图像的最佳方法是什么。

我一直在玩空和文件存在函数,但我没有得到正确的。请帮帮忙。

如果这个问题看起来很蠢的话,我不是专家!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-23 02:22:41

有很多方法可以做到这一点。

代码语言:javascript
复制
<?php

if(file_exists("images/artists/$artist_name.jpg"))
    $fileName = "$artist_name.jpg";
else
    $fileName = "default.jpg";
?>

<div class="artimg"><img src="images/artists/<?php echo $fileName;?>"  height="50px" width="50px"/></div>
票数 8
EN

Stack Overflow用户

发布于 2012-03-23 02:24:47

磁盘访问速度慢

你有几个选择。一是每次需要显示文件时都要检查文件是否存在。不幸的是,这并不理想,因为磁盘读取可能是性能瓶颈。如果您每分钟提供数百个页面加载,这不是一个有效的解决方案。在高性能环境中,您希望避免尽可能多的文件状态:

代码语言:javascript
复制
$img_dir = '/path/to/artist/images';
$expected_file = $img_dir . '/' . $artist_name . '.jpg';
$img = file_exists($expected_file) ? $artist_name : 'default';

把名字硬编码到你的代码中

另外,如果您有少量的艺术家需要显示的图像是硬编码的名称,您拥有的图像:

代码语言:javascript
复制
$authors = array('Bill Shakespeare', 'Douglas Adams', 'Ralph Ellison');
$img = in_array($artist_name, $authors) ? $artist_name : 'default';

当然,这并没有什么特别的帮助,因为在每次更改艺术家图像目录时,您都需要编辑代码。

最好的主意..。

在这种情况下,首选的选项是:

,因为您已经访问了数据库以获取艺术家记录,所以将相关的图像文件名存储在artists表的数据库列中。这样就可以避免过多的磁盘访问。

此方法允许您使用原始查询从数据库检索文件名。如果字段为空,您将知道将显示默认图像。

票数 1
EN

Stack Overflow用户

发布于 2012-03-23 02:30:23

试一试

代码语言:javascript
复制
if ( !file_exists( 'images/artists/' . $filename ) ) {
   $artist_name = 'holderthumbnail';
}

让holderthumbnail.jpg在您的“艺术家”目录中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9833282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档