Как определить были ли введены и отправлены данные формы $_POST['name']?

160
29 апреля 2019, 01:30

Делаю фильтр на wordpress. Хочу сделать так, чтобы при передаче параметра в input выполнялось условие проверки на отправленных данных возраста (причем, значение 0 - это тоже возраст), а при загрузке загружались все данные без фильтра.

Пробую проверить на установку значения поля if(isset($_POST['age'])){}, но условие выполняется (фильтруется) каждый раз, даже при изначальной загрузке не передавая данные из формы.

Как определить отправлены были данные или нет так, чтобы соблюдалось 2 условия:

1) проверить были ли отправлены данные формы, НО, чтобы можно было вводить значение "0"!

2) фильтр отрабатывал на той же странице, как сейчас.

    <form action="" method="post">
        <label class="ages-title-method">Введите возраст:
            <input type="number" name="age"/>
        </label>
        <button type="submit">Найти</button>
    </form>
    <div>
    <?php
    if(isset($_POST['age'])){
    $args = array ( 
        'post_type' => 'method', 
        'posts_per_page' => '-1',
        'relation' => 'AND',
        'meta_query' => array(
           'key' => 'age_min',
           'value' => (int) $_POST["age"],
           'type'    => 'numeric',
           'compare' => '<='
        ),
    );
    }
    else {
    $args = array ( 
        'post_type' => 'method', 
        'posts_per_page' => '-1',
    );           
    }
    $the_query = new WP_Query( $args );
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
       <div class="name"><?php the_title(); ?></div>
    <?php endwhile; wp_reset_postdata(); ?>
    </div>
Answer 1

Если я правильно понял задачу, можно попробовать вот так:

<?php
if (!empty($_POST['age']) || $_POST['age']=="0") {
 $args=array (
  'post_type'=>'method',
  'posts_per_page'=>'-1',
  'relation'=>'AND',
  'meta_query'=>array (
   'key'=>'age_min',
   'value'=>(int)$_POST["age"],
   'type'=>'numeric',
   'compare'=>'<='
  ),
 );
}
else {
 $args=array (
  'post_type'=>'method',
  'posts_per_page'=>'-1',
 );
}
Answer 2

Нашел ответ - условие должно быть:

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['age'])){
READ ALSO
Полимормизм с Абстракцией в PHP ООП

Полимормизм с Абстракцией в PHP ООП

Добрый день друзья возникла проблема с выводом информации из баз данныхПодскажите как можно решить задачу

157
Немогу понять в чем проблема, можете помочь? Не обновляються данные пользователя

Немогу понять в чем проблема, можете помочь? Не обновляються данные пользователя

Попробуйте убрать второй session_start() и поменять проверку $_SESSION на проверку не через сравнение, а через if(isset($_SESSION['auth']))

152
Форма обратной связи Wordpress

Форма обратной связи Wordpress

Ребят,помогите запустить форму обратной связи на Wordpress,без плагинов Вот оригинальный код страницы темы , pagephp

159
Ошибка ext-mysqli is missing in composer.json

Ошибка ext-mysqli is missing in composer.json

При попытке обработать следующие команды:

164