使用OR代替AND(&)

时间:2015-06-01 18:41:36

标签: php url session-variables

我正在尝试设置一个具有下拉菜单的网站,每个选项都会引导您访问数据库的一个子集。例如,俄亥俄州或密歇根州等地的人。我有一些人想要被拉,无论状态如何,并且有一个名为all_states的类别。我已经看到了如何向URL添加变量(例如:http://www.website.com/page.htm?OH=1)我还看到了设置两个变量的示例(例如:http://www.website.com/page.htm?OH=1&all_states=1)。但是我如何设置它以便只需要满足一个条件,实际上是OR而不是AND?我希望能够设置调用数据的链接,例如,对于那些俄亥俄州是真的(OH = 1)或者all_states为真(all_states = 1),因为有些人没有指定特定的状态,但会帮助所有因此我需要能够在一个URL命令中提取每个列表。

1 个答案:

答案 0 :(得分:0)

URL中的&符号只是变量之间的分隔符,并不意味着需要任何内容​​。您的PHP(或解析GET变量的任何内容)应该检查它。

例如,您可以通过编写类似(在PHP中)的内容来解析它:

if(isset($_GET['all_states'])){
    // do something for all states //
}else{
    $states = ["OH", "CA", ...];
    // recurse through state abbreviations //
    foreach($state in $states){
         if(isset($_GET[$state])){
              // do something for individual state //
         }
    }
}

在Javascript中:

 $(document).ready(function(e){
     var allStates = getParameterByName('all_states');

     if(isset(allStates)){
          // do something for all states //
     }else{
          // check & do something for individual states //
     }
});

function isset(obj){
      return typeof(obj) !== 'undefined' && obj != null && obj !== '';
}

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

虽然我个人建议使用状态变量,如下所示:

个别州的州变量:http://whatever.com/something.php?state=OH

所有国家的州变量:http://whatever.com/something.php?state=all

然后只需检查PHP中的状态变量是什么。