Я работаю над небольшим проектом, и мне нужно отобразить образ автора для каждого автора в моей базе данных. просмотрите приведенный ниже код:
– 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
Вышеприведенный код работает, но если я не сохранил изображение в каталоге «artist», для этого исполнителя не появится изображение.
<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg" height="50px" width="50px"/></div>
ВОПРОС: Каков наилучший способ отображения изображения по умолчанию, если указанное значение не найдено.
Я играю с пустыми файлами, но у меня нет прав. Пожалуйста помоги.
PS Я не профессионал, если этот вопрос кажется глупым!
Есть много способов сделать это.
<?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>
У вас есть несколько вариантов. Один из них – проверить, что файл существует каждый раз, когда вам нужно его отображать. К сожалению, это не так идеально, потому что чтение дисков может быть узким местом производительности. Это не приемлемое решение, если вы обслуживаете сотни загрузок страниц в минуту. В высокопроизводительных средах вы хотите избежать как можно большего количества файлов:
$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';
Конечно, это не особенно полезно, потому что тогда вам нужно будет редактировать свой код каждый раз, когда изменяется ваш каталог изображений художника.
Предпочтительным вариантом в этом случае будет следующее:
Поскольку вы уже попали в базу данных, чтобы получить записи исполнителя, сохраните соответствующее имя файла изображения в столбце базы данных таблицы художников. Таким образом, вы можете избежать избыточного доступа к диску.
Этот метод позволяет получить имя файла из базы данных с исходным запросом. Если поле пусто, вы будете знать, чтобы отображать изображение по умолчанию.
пытаться
if ( !file_exists( 'images/artists/' . $filename ) ) { $artist_name = 'holderthumbnail'; }
have holderthumbnail.jpg в вашем каталоге 'artist'
Код:
<?php if(file_exists("$your_image.jpg")) $filename = "$your_image.jpg"; else $filename = "default.jpg"; echo "<img src='$filename'/>"; ?>
<img id="currentPhoto" src="SomeImage.jpg" onerror="this.src='Default.jpg'" width="100" height="120">