2013-05-28 7 views
0

Я построил пользовательский form для поиска на моем сайте. Я использую скрытые поля ввода, чтобы определить, какой тип фильтра поиска был выбран. Значение получает прошло, и я проверить на моей странице поиска, что было значение, а затем направить на нужную страницу результатов поиска так:Решите, какое скрытое входное значение передается

<?php 

    $search_refer = $_GET['search_type']; 

    if($search_refer == 'members') { 
     load_template(TEMPLATEPATH . '/search-members.php'); 
    } else if($search_refer == 'event') { 
     load_template(TEMPLATEPATH . '/search-member-event.php'); 
    } else { 
     load_template(TEMPLATEPATH . '/search-site.php'); 
    } 

?> 

Вот два поля в HTML/PHP

<div class="state"> // Sorting by user State 
    <input type="hidden" name="search_type" value="members"> 
    <select id="stateDrop" name="state"> 
     <option value="">State</option> 
     <?php 
      foreach($states as $state) { 
       echo '<option value="'.$state.'">'.$state.'</option>'; 
      } 
     ?> 
    </select> 
</div> 
<div class="sort-event"> // Sorting by an Event 
    <input type="hidden" name="search_type" value="event"> 
    <select id="eventDrop" name="event"> 
     <option value="">Event</option> 
     <?php 
      $args = array(
       'post_type' => 'events', 
       'order' => 'ASC' 
      ); 

      $eQuery = new WP_Query($args); 

      while($eQuery->have_posts()) : $eQuery->the_post(); 

       echo '<option value="'.$eQuery->post->post_title.'">'.$eQuery->post->post_title.'</option>'; 

      endwhile; 

      wp_reset_query(); 
     ?> 
    </select> 
</div> 

Оба имеют имя search_type как скрытое имя, но значения разные. members vs event. Моя проблема заключается в том, когда вы нажимаете кнопку отправки, принимаемое значение всегда является последним скрытым входным значением. например event.

Есть ли способ решить, какое поле было выбрано, чтобы я мог направлять результаты поиска на правильную страницу. (поисковые страницы используют различную информацию на основе поиска).

Спасибо,

+5

У вас не может быть 2 входа с одинаковым именем на форме. –

+0

Отключить отключено = "отключено" attr –

ответ

2

Как у вас есть два входа с тем же именем, только один из них никогда не будет установлено на сервер.

Если вы хотите, чтобы они использовали одно и то же имя, вам понадобится использовать POST и две формы, для чего потребуется две отдельные кнопки отправки, но перейдите на ту же страницу. Таким образом, вы можете отправить желаемую форму на основе фильтра.

<form action="yourpage.php" method="post"> 
     <input type="hidden" name="search_value" value="members"/> 
     ... member stuff 
     <input type="submit" value="Filter Members"/> 
</form> 
<form action="yourpage.php" method="post"> 
     <input type="hidden" name="search_value" value="event"/> 
     ... event stuff 
     <input type="submit" value="Filter Events"/> 
</form> 

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

Event: <input type="radio" name="search_type" value="event"/> 
Members: <input type="radio" name="search_type" value="members"/> 



// Then in PHP $_POST["search_type"] will hold the selected value. 

Если вы хотите придерживаться ГЭТ, чтобы установить значение одного скрытый элемент, прежде чем пользователь нажимает на ссылку, вы можете использовать JavaScript.

+0

Думаю, мне придется идти с Javascript, потому что мне нужны входные данные для выпадающих списков. – Romes

+1

@Romes В этом случае вы можете прикрепить событие «OnChange» к полю Select, которое обновляет скрытый элемент до требуемого значения. – MatthewMcGovern

+0

Звучит как отличный план, спасибо. – Romes

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