Как скрыть блок если условие выполняется в PHP

от автора

в

Скрытие блоков на веб-страницах — важная часть веб-разработки. Иногда необходимо скрыть определенный контент для одних пользователей и показать его для других, или же сделать его видимым только при выполнении определенных условий. Например, вы хотите скрыть блок с рекламой для авторизованных пользователей или показать сообщение об ошибке только в случае, если произошла ошибка.

Основные понятия

Прежде чем мы углубимся в код, давайте кратко обсудим основные понятия, которые нам понадобятся:

  • PHP — язык программирования, широко используемый для создания динамических веб-страниц.
  • HTML — язык разметки, используемый для создания структуры веб-страниц.
  • Условные оператор — конструкции в программировании, позволяющие ывполнять определенные действия в зависимости от выполнения определенного условия.

Пример использования условного оператора

Начнем с простого примера. Допустим, у нас есть блок, который мы хотим скрыть, если переменная $showBlock равна false.

<?php
$showBlock = false;

if ($showBlock) {
    echo '<div>Этот блок виден</div>';
} else {
    echo '<div style="display:none;">Этот блок скрыт</div>';
}
?>

В этом примере, если переменная $showBlock равна false, блок будет скрыт с опмощью CSS свойства display: none;. Если же $showBlock равна true, блок будет отображаться.

Пример с использованием данных пользователя

Теперь рассмотрим более сложный пример, где блок будет скрываться или показываться в зависимости от состояния пользователя. Допустим, у нас есть пользователи, которые могут быть авторизованы или нет. Если пользователь авторизован, мы не показываем блок с рекламой.

<?php
$userIsLoggedIn = true; // Это значение можно получить из сессии или базы данных

if ($userIsLoggedIn) {
    echo '<div style="display:none;">Реклама</div>';
} else {
    echo '<div>Реклама</div>';
}
?>

В этом случае, если переменная $userIsLoggedIn равна true, блок с рекламой будет скрыт. Если же пользователь не авторизован, блок с рекламой будет виден.

Более сложные условия

Иногда условия могут быть более сложными и включать несколько проверок. Рассмотрим пример, когда блок скрывается, если пользователь авторизован и у него есть определенная роль.

<?php
$userIsLoggedIn = true;
$userRole = 'admin';

if ($userIsLoggedIn && $userRole == 'admin') {
    echo '<div style="display:none;">Специальное предложение</div>';
} else {
    echo '<div>Специальное предложение</div>';
}
?>

В этом примере блок с «Специальым предложением» будет скрыт только для авторизованных пользователей с ролью «admin».

Скрытие блоков с использованием функций

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

<?php
function shouldShowBlock($isLoggedIn, $role) {
    return !($isLoggedIn && $role == 'admin');
}

$userIsLoggedIn = true;
$userRole = 'admin';

if (shouldShowBlock($userIsLoggedIn, $userRole)) {
    echo '<div>Специальное предложение</div>';
} else {
    echo '<div style="display:none;">Специальное предложение</div>';
}
?>

Работа с данными из базы данных

Очень часто условия для скрытия блоков зависят от данных, хранящихся в базе данных. Рассмотрим пример, когда мы проверяем, нужно ли скрыть блок, основываясь на данных пользователя из базы данных.

<?php
// Подключение к базе данных
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');

// Получение данных пользователя
$stmt = $pdo->prepare('SELECT is_logged_in, role FROM users WHERE id = :id');
$stmt->execute(['id' => $userId]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if ($user && $user['is_logged_in'] && $user['role'] == 'admin') {
    echo '<div style="display:none;">Специальное предложение</div>';
} else {
    echo '<div>Специальное предложение</div>';
}
?>

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

Использование AJAX для динамического скрытия блоков

Иногда нам нужно скрывать или показывать блоки динамически, без перезагрузки страницы. В таких случаях на помощь приходит AJAX.

Шаг 1: Создаем PHP скрипт для проверки условий

// checkCondition.php
<?php
session_start();

$response = [
    'shouldShowBlock' => !($_SESSION['logged_in'] && $_SESSION['role'] == 'admin')
];

echo json_encode($response);
?>

Шаг 2: Создаем JavaScript код для отправки AJAX запроса

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Скрытие блоков с помощью PHP и AJAX</title>
    <script>
        function checkCondition() {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'checkCondition.php', true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    var response = JSON.parse(xhr.responseText);
                    var block = document.getElementById('specialOffer');
                    if (response.shouldShowBlock) {
                        block.style.display = 'block';
                    } else {
                        block.style.display = 'none';
                    }
                }
            };
            xhr.send();
        }

        window.onload = checkCondition;
    </script>
</head>
<body>
    <div id="specialOffer">Специальное предложение</div>
</body>
</html>

В этом примере, когда страница загружается, выполняется AJAX запрос к checkCondition.php, который проверяет условие и возвращает результат. На основе этого результата блок либо скрывается, либо показывается.


Автор статьи:

Обновлено:

30.05.2024


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *