如何:允许用户为函数选择值

时间:2011-05-06 16:37:44

标签: php arrays

嗨我有一个地理位置功能,我用于我的基于wordpress的城市,我想根据网站访问者的位置使用显示位置相关的帖子。

我正在使用的功能:

<form action="" method="POST" name="u_select_radius" id="u_select_radius">
     <select>
        <option value="5">5 Miles</option>
        <option value="10">10 Miles</option>
        <option value="20">20 Miles</option>
        <option value="50">50 Miles</option>
        <option value="100">100 Miles</option>
     </select>
        <input type="submit" value="Search" name="Search" class="blue" />
     </form>


    <?php //begin geoposty demo 

    $localCoupons = new WP_Query('post_type=post&posts_per_page=-1&orderby=meta_value&meta_key=City&order=ASC');

    if ($localCoupons->have_posts()): while ($localCoupons->have_posts()): $localCoupons->the_post();


        if (function_exists('geoDistanceFrom') && $city != '' && $state != '') {

          ///get user radius selection
          if ( isset($_POST['u_select_radius'])) {
            $radius = intval($_POST['u_select_radius']);
          } else {
            $radius = 100;
          } 

          if (geoDistanceFrom($city . ',' . $state) < $radius /* Mile radius */) {

                echo '<h3>' . get_the_title() . '</h3>';
                echo '<p>' . $city . ', ' . $state . '</p>';
                // the_content();

            }

       } 

    endwhile; endif; 

    // end geoposty demo
    ?>       

    </div>

此函数检查插件函数(geoDistanceFrom)是否存在,然后检查某些条件以使帖子基于(城市和州)。如果它显示“100”(英里半径),我想让用户选择他们想要的半径(例如5,10,20,50,100等)

我想我需要创建一个具有预定义值(5,10,20,50等)的数组供您选择。我需要一些帮助。如何允许用户为此功能选择值?

如果此解决方案需要任何其他附加信息,请与我们联系。

非常感谢!

2 个答案:

答案 0 :(得分:2)

我的建议是创建一个带有下拉列表框的简单表单,其中包含您希望用户能够选择的值。检查它的动作是否设置为执行地理定位的脚本,然后将半径的变量设置为用户选择的任何内容。

<form action="geolocation_script.php" method="POST" name="u_select_radius" id="u_select_radius">
 <select>
    <option value="5">5 Miles</option>
    <option value="10">10 Miles</option>
    <option value="20">20 Miles</option>
    <option value="50">50 Miles</option>
    <option value="100">100 Miles</option>
</select>

geolocation_script.php 然后有一些代码来抓住他们的选择

<?php

if (function_exists('geoDistanceFrom') && $city != '' && $state != '') { 

  //get user radius selection
  if ( isset($_POST['u_select_radius'] ) {
    $radius = intval($_POST['u_select_radius']);
  } else {
    $radius = 100;
  }

  if (geoDistanceFrom($city . ',' . $state) < $radius /* Mile radius */) {

...

请注意,这段代码并不完美,但是应该给你一些合作的东西。

答案 1 :(得分:0)

据推测,您将在表单中提供此选项,因此只需使用select

<select name="distance">
   <option value="5">5 miles</option>
   <option value="10">10 miles</option>
   etc...
</select>

你如何产生这取决于你。它可以简单地硬编码到页面中,或者您可以在某处存储允许的距离并动态构建选项。

然后只需在提交时使用常用的表单处理工具检索该值。