我正在开发一个小项目,我需要在我的数据库中显示作者的每个作者的图像。窥视下面的代码:
- QUERY -
$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
上述代码可以正常工作,但如果我没有在'artists'目录中保存图像,则不会显示该艺术家的图像。
<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg" height="50px" width="50px"/></div>
问题:如果找不到指定的on,显示默认图像的最佳方法是什么。
我一直在玩空文件和存在的函数,但我没有把它弄好。请帮忙。
如果这个问题看起来很愚蠢,我不是专业人士!答案 0 :(得分:7)
有很多方法可以做到这一点。
<?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>
答案 1 :(得分:1)
你有几个选择。一种是每次需要显示文件时检查文件是否存在。不幸的是,这不太理想,因为磁盘读取可能是性能瓶颈。如果您每分钟提供数百个页面加载,那么它不是一个可行的解决方案。在高性能环境中,您希望避免尽可能多的文件统计信息:
$img_dir = '/path/to/artist/images';
$expected_file = $img_dir . '/' . $artist_name . '.jpg';
$img = file_exists($expected_file) ? $artist_name : 'default';
另外,如果您有少量艺术家需要显示的图像是硬编码您的图像的名称:
$authors = array('Bill Shakespeare', 'Douglas Adams', 'Ralph Ellison');
$img = in_array($artist_name, $authors) ? $artist_name : 'default';
当然,这不是特别有用,因为每当您的艺术家图片目录发生变化时,您都需要编辑代码。
此实例中的首选选项是:
由于您已经访问数据库以获取艺术家记录,因此请将相关图像文件名存储在艺术家表的数据库列中。这样就可以避免多余的磁盘访问。
此方法允许您使用原始查询从数据库中检索文件名。如果该字段为空,您将知道显示默认图像。
答案 2 :(得分:0)
试
if ( !file_exists( 'images/artists/' . $filename ) ) {
$artist_name = 'holderthumbnail';
}
在你的&#39;艺术家&#39;中拥有holderthumbnail.jpg目录
答案 3 :(得分:0)
代码:
<?php
if(file_exists("$your_image.jpg")) $filename = "$your_image.jpg";
else $filename = "default.jpg";
echo "<img src='$filename'/>";
?>
答案 4 :(得分:0)
<img id="currentPhoto" src="SomeImage.jpg" onerror="this.src='Default.jpg'" width="100" height="120">
答案 5 :(得分:0)
尝试这种方式:对于Laravel:
<?php
$image = parse_url($user->image);
if(isset($image['host'])){
$image= $user->image;
}
else if($image==null){
$image= Request::root().'/uploads'.'/subsystems_icons/'.'democp.jpg';
}
else {
$image= Request::root().'/uploads/'.$user->image;
}
?>
<div class="">
<img class="image" style="width: 100%; height: 300px; object-fit: contain ;"
src="{{$image}}">
</div>