确定传递哪个隐藏的输入值

时间:2013-05-28 15:27:03

标签: php html wordpress forms

我为自己网站上的搜索过滤构建了自定义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

有没有办法决定选择哪个字段,以便我可以将搜索结果指向正确的页面。 (搜索页面根据搜索引入不同的信息)。

谢谢,

1 个答案:

答案 0 :(得分: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.

如果您希望坚持使用GET,可以在用户点击链接之前使用JavaScript设置单个隐藏元素的值。