Показать сообщение отдельно
  #1 (permalink)  
Старый 12.03.2019, 02:15
Аспирант
Отправить личное сообщение для Alessio18911 Посмотреть профиль Найти все сообщения от Alessio18911
 
Регистрация: 18.06.2017
Сообщений: 87

Некорректно работает условие
Привет всем! У меня есть кусочек кода, Данная форма должна выводить список задач в зависимости от того, найдёт ли она совпадения по слову в названии задачи.
<form class="search-form" action="index.php" method="get">
    <input class="search-form__input <?= empty($tasks_for_category) ? 'form__input--error': ''; ?>" type="text" name="search" value="" placeholder="Поиск по задачам">
    <input class="search-form__submit" type="submit" name="" value="Искать">
    <p class="form__message"><?= empty($tasks_for_category) ? "По Вашему запросу ничего не найдено" :''; ?></p>
</form>

К ней есть код:
$show_completed = $_GET['show_completed'] ?? '';
$user = isset($_SESSION['user']) ? $_SESSION['user'] :'';
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0;
$term = isset($_GET['term']) ? $_GET['term'] : 'all';
$category_id = isset($_GET['category']) ? (int)$_GET['category'] : 0;
$tasks_for_category = getAllTasksForCategory($connection, $user_id, $category_id, $term);
$category_list = getCategories($connection, $user_id);
$task_list = getTasks($connection, $user_id);


if(isset($_GET['task_id']) && isset($_GET['check'])) {
    $task_id = (int)$_GET['task_id'];
    toggleTaskStatus($connection, $task_id, $user_id);
    header('Location: /');
    exit();
}

if($_SERVER['REQUEST_METHOD'] === 'GET') {
    $search = isset($_GET['search']) ? $_GET['search'] :'' ;
    $tasks_for_category = getTasksBySearch($connection, $user_id, $search);
}

if(!$user) {
    $content = include_template('guest.php', []);
} else {
    $content = include_template('index.php', [
        'show_completed'=> $show_completed,
        'tasks_for_category' => $tasks_for_category,
        'category_id' => $category_id,
        'term' => $term
    ]);
}

$layout_content = include_template('layout.php', [
    'content' => $content,
    'page_title' => 'Дела в порядке',
    'isSignInOrRegister' => false,
    'user' => $user,
    'user_id' => $user_id,
    'category_list' => $category_list,
    'term' => $term,
    'task_list' => $task_list
]);

print($layout_content);

Проблема в следующем: при загрузке страницы должен выводиться список всех задач, это переменная
$tasks_for_category = getAllTasksForCategory($connection, $user_id, $category_id, $term);

Если же была нажата кнопка поиска, input type="submit", то должна сработать другая функция, но результат которой присвоится той же переменной:
$tasks_for_category = getTasksBySearch($connection, $user_id, $search);


Обе функции - getAllTasksForCategory(...) и getTasksBySearch(...) 100% рабочие. Но проблема в следующем: получается, что условие $_SERVER['REQUESTED_METHOD'] === 'GET' всегда true, даже когда кнопка ещё не нажималась. И, следовательно, даже при первичной загрузке страницы всегда активна только 2-я функция ((( Подскажите, чего я опять не понимаю?
Ответить с цитированием