Заполнитель изображения для Broken Image Link?

В настоящее время пользователи могут загружать изображения на мой сайт, а местоположение изображения хранится в таблице MySQL.

Когда я вызываю изображения с помощью функции SELECT, они загружаются через стиль CSS Фоновое изображение: URL ( ‘image.jpg’)

В настоящее время я использовал оператор IF, который помещает изображение-заполнитель вместо строк, для которых столбец «Image_URL» имеет значение NULL.

if ($row["Image"] != "") {
echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"]."\")'>";
} else {
echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
}

Мой метод, однако, не работает для ошибочных ссылок (если исходное изображение было удалено или по какой-то причине ссылка неверна.) Он просто показывает пустым, и я понимаю, почему, потому что $ row [«Image»]! = NULL, там есть ссылка, просто нет ссылки на изображение.

Можно ли загрузить изображение-заполнитель no-image.jpg, если по указанной ссылке не найдено ни одного изображения?

Мои DIV предназначены только для того, чтобы сделать мои изображения круглыми и центрированными, поэтому я публикую их здесь на случай, если это поможет, вы можете помочь мне адаптировать эти классы для добавления функциональности заполнителя.

.image-cropper {
max-width: 150px;
height: auto;
position: relative;
overflow: hidden;
}
.rounded {
display: block;
margin: 0 auto;
height: 150px;
width: 150px;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
-o-border-radius: 50%;
border-radius: 50%;
background:center no-repeat;
background-size:cover;
}

Изображение-обрезка и округленный DIV на самом деле с этого сайта, так что спасибо Hiral!

4

Решение

Мне удалось заставить его работать с помощью file_exists после использования glob,

Но спасибо Стюартсайду за то, что он поставил меня на правильный путь, а также структурировал if заявление.

Это код сейчас:

$image = $row["Image"];
if ($row["Image"] != "") {
if (file_exists('uploads/'.$image)) {
echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"];
} else {
echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg";
}
} else {
echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg";
}

Я предполагаю, что следующее также будет работать:

    if (file_exists('uploads/'.$row["Image"])) {

Спасибо всем за помощь! 🙂

1

Другие решения

Вы могли бы использовать glob() функция, чтобы узнать, существует ли файл.

Что-то вроде этого:

if ($row["Image"] != "") {
var $file = glob("/uploads/".$row["Image"]);
if (count($file) > 0) {
echo "<td width='200' rowspan='3'><center><a href='/uploads/".$row["Image"]."' target='_blank'><div class='image-cropper'><div class='rounded' style='background-image:url(\"/uploads/".$row["Image"]."\")'>";
} else {
echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
}
} else {
echo "<td width='200' rowspan='3'><center><a><div class='image-cropper'><div class='rounded' style='background-image:url(\"/images/no-image.jpg\")'";
}
0

По вопросам рекламы [email protected]