Изображение из таблицы sql не соответствует css

Для изображений для моего веб-сайта я беру их из своей таблицы sql. Большинство изображений работают и стилизованы так, как должны. Однако изображения для фона моего заголовка нет, и я не могу понять, почему, поскольку другие изображения работают нормально.

Это код для фона заголовка, который показывает, как я беру изображение из своей таблицы sql:

<header class = "background -display-container -grayscale-min" id = "home">
        <?php
        try {
        $stmt = $db->query('SELECT image_title, image FROM images WHERE id= 1 ');
        while($row = $stmt->fetch()){
        echo "<img src='admin/uploads/".$row['image']."'";
        }
    }catch(PDOException $e) {
                echo $e->getMessage();
            }
?> 

  <div class = "logan-display-left slogan" style = "padding:48px">
    <span class = "-jumbo -hide-small">Baking for you since '62</span><br>
    <p><a href = "#about" class = "-button -white -padding-large -large -margin-top -opacity -hover-opacity-off">Learn more</a></p>
  </div> 
</header>

Это css, которому он должен следовать:

/* Full height image header */
.background {
  background-position: center;
  background-size: cover;
  min-height: 100%;
}

Вы выводите тег <img>, но ваш CSS выглядит так, как будто вы ожидаете, что изображение будет на заднем плане?

alx 20.06.2019 12:31

Также вы никогда не закрывали тег img "<img src='admin/uploads/".$row['image']."'"; должен быть "<img src='admin/uploads/".$row['image']."' />";

Dimitris Filippou 20.06.2019 12:32

Если проблема полностью связана с вашим CSS, упростите свой пример. Просмотрите исходный код страницы в браузере и изучите вывод HTML. Нет причин уделять так много внимания серверному коду.

David 20.06.2019 12:33

Да, он должен быть на фоне, что тогда вместо тега <img>? И спасибо, Димитрис, теперь разобрался

Lewis Ross 20.06.2019 12:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, так и должно быть:

<header class = "background -display-container -grayscale-min" id = "home" style = "background-image: url(
        <?php
        try {
        $stmt = $db->query('SELECT image_title, image FROM images WHERE id= 1 ');
        while($row = $stmt->fetch()){
        echo "admin/uploads/".$row['image'];
        }
    }catch(PDOException $e) {
                echo $e->getMessage();
            }
?>">

Таким образом, вместо создания тега <img> устанавливается атрибут background-image CSS. Затем ваш класс background сделает все остальное.

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

<?php
function imageUrl($id) use ($db)
{
    try {
        $stmt = $db->query('SELECT image FROM images WHERE id=  ' . (int)$id);
        $row = $stmt->fetch();
        return "admin/uploads/".$row['image'];
    } catch(PDOException $e) {
        // This way you at least will see error in your server logs, and probably in browser console:
        return $e->getMessage();
    }
}
?>
<header class = "background -display-container -grayscale-min" id = "home" style = "background-image: url(<?= imageUrl(1) ?>;">

выдает ошибку, говорящую о неожиданном использовании, ожидающем { ?

Lewis Ross 20.06.2019 13:07

ошибка исчезнет, ​​если я сделаю $image url = function ($id) use ($db) { etc, а затем, очевидно, изменю imageUrl(1) на $imageUrl(1). Однако затем я получаю сообщение об ошибке, говорящее, что изображение не найдено, оно знает, что ищет, но по какой-то причине не может справиться

Lewis Ross 20.06.2019 13:16

Ну, я не могу помочь с этим, так как у меня нет полной среды для воспроизведения. В любом случае, это всего лишь подсказка о том, как сделать код лучше. Если он у вас работает как есть, отлично, ничего потребности менять нельзя. Кстати, хороший улов с use.

alx 20.06.2019 13:25

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

Lewis Ross 20.06.2019 22:03

Другие вопросы по теме