2015-11-25 6 views
-1

Я начинаю программировать и нуждаюсь в небольшой помощи. У меня есть код, который показывает изображение в соответствии с определенным значением в столбце таблицы MySQL, как это:Отображение определенного изображения при отсутствии файла

//Show last 10 added by ID 
$sql = "(SELECT * FROM food_tbl ORDER BY food_id DESC LIMIT 10) ORDER BY food_id ASC;"; 

$result = $conn->query($sql); 
$pathImg = "/images/"; 
if ($result->num_rows > 0) 
{ 
    while($row = $result->fetch_assoc()) 
    { 
     $pathFile = $pathImg . $row['food_name'] . ".jpg"; 
     echo '<img src="' . $pathFile . '">'; 
    } 
} 

Это выходы, например, banana.jpg ... Дело в том ... Я бы например, показывать стандартное изображение, когда файлы фактически не существуют, например, если у меня нет файла с именем banana.jpg в моем каталоге «/ images /», вместо него будет отображаться файл unknownfood.jpg (что действительно быть внутри этого каталога, конечно).

Теперь, вот в чем дело, я уже нашел некоторые вещи здесь: --- Display specific image depending on specific text in MySQL table using PHP

... и я в конечном итоге пытается это:

while($row = $result->fetch_assoc()) { 
    $pathFile = $pathImg . $row['food_name'] . ".jpg"; 
    if (file_exists($pathFile)) { 
     echo '<img src="' . $pathFile . '">'; 
    } else { 
    $pathFile = $pathImg . "unknownfood.jpg"; 
    echo '<img src="' . $pathFile . '">'; 
    } 
} 

Теперь, что это делает это будет полностью игнорировать файлы, которые на самом деле там. Например, если я попробую показать banana.jpg, он вместо этого покажет unknownfood.jpg.

Я уверен, что это что-то очень простое, что я напортачиваюсь, или что-то, что я не использую так, как он предназначен. Спасибо за помощь!

+0

что вы храните в вашем ряду, если нет изображения? ноль? –

+0

@MarkNg Мне нужно обновлять каждый день, и я мог бы добавить новое значение для «food_name», но используемые изображения должны быть очень конкретными, поэтому может потребоваться некоторое время, чтобы на самом деле иметь их в тот же день, когда я должен добавьте новое значение. Таким образом, точка зрения заключается в том, что у него есть «ожидающий» образ файла изображения (формат, используемый на сайте, НЕОБХОДИМО изображение, поэтому мне нужно добавить образ заполнителя), в то время как я действительно настроил правильный. –

ответ

1

Когда вы в PHP, используя file_exists($pathFile) путь на сервере, относительно корня документа (который может быть /public_html/youruser), в то время как HTML считывает из базовой папки (вне домена, /).

Это означает, что ваш код должен будет выглядеть примерно так

if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathFile)) 
+1

Вот и все. Очень благодарен. Спасибо огромное! –

+1

хорошая работа Qirel. – Drew

0

file_exists проверит путь к файловой системе, например /home/www/images/banana.jpg.

При отображении тега img он вытащит изображение из корня doc, domain.com/images/banana.jpg.

Найдите правильный путь к файловой системе и передайте его file_exists, он вернет правильный ответ.

Прямо сейчас он всегда будет возвращать false, поэтому вы попадете в раздел else в статье if.

Смежные вопросы