Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拥有多个排序MySQL查询的最有效方法_Php_Mysql - Fatal编程技术网

Php 拥有多个排序MySQL查询的最有效方法

Php 拥有多个排序MySQL查询的最有效方法,php,mysql,Php,Mysql,我有一个主题公园列表,是从MySQL表中提取出来的。默认查询是 try { $sql = 'SELECT park_id, name, town, state, country FROM tpf_parks ORDER BY name ASC'; $result = $pdo->query($sql); } catch (PDOException $e) { $error = 'Error fetching parks: ' . $e->getMessage(); //include

我有一个主题公园列表,是从MySQL表中提取出来的。默认查询是

try
{
$sql = 'SELECT park_id, name, town, state, country
FROM tpf_parks ORDER BY name ASC';
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error = 'Error fetching parks: ' . $e->getMessage();
//include 'error.html.php';//
exit();
}
并按名称ASC排序。我想在上面的链接,将按州和国家排序的名单(并最终评级)。我还想链接,将显示只有主题公园,只有水上公园,只有'其他'和'显示所有'

我的看法是,每个查询都需要一个新的php页面,但这意味着16个不同的php页面,每个查询一个。有没有一种方法可以将所有查询都保存在一个页面中,这样16个查询都可以在一个页面中运行,单击一个链接就可以加载新排序的列表来替换旧列表

除此之外,我还需要一个A-Z链接,点击其中一个,页面将向下跳转到排序方法的字母,例如主题公园列表按州排序,点击“K”将向下跳转到堪萨斯州的公园。我想这些链接使用html锚,但我如何将结果回传到26个卡盘(每个字母A-Z对应一个)

很抱歉问了这么多冗长的问题,我被难住了。
谢谢

也许使用排序功能只是通过一些脚本输出会更好。(等)

尝试此功能:

   function getQueryOrder($field,$order){
      $query="";
      switch ($field){
         case "park_id":
             $query="SELECT park_id, name, town, state, country FROM tpf_parks ORDER BY park_id ".$order;
             break;
         }
         case "name":
             $query="SELECT park_id, name, town, state, country FROM tpf_parks ORDER BY name ".$order;
             break;
         }
         case [Other-field]:
             ..... 
             break;
         }
      }
      return $query;
   }
然后使用它:

try{
   $sql = getQueryOrder('park_id','ASC');// select the field park_id and order ASC
   $result = $pdo->query($sql);
}

我会考虑在客户端执行此操作。()谢谢你,我花了一段时间才理解上面的代码,因为我对PHP和web设计一般都是新手,但它确实起到了作用。我的下一个问题是,我将如何将这个查询的结果分为第一个字母进行回应?我的想法是在页面顶部有A-Z链接,链接到每个字母列表中的html锚。目前我用来显示结果的代码是``可以将其编辑成类似``的格式吗
code
我不确定我是否理解您的确切需求,所以我给您答案:1)ORDER BY{$var}ASC(为您提供回送结果的A-Z排序)您还可以在函数内生成回送结果的链接,如:echo“”;2) 如果要将结果分开,请按以下方式运行该函数:orderby(“park_id,name,town,state,country”,“name LIKE'A%”);3) 如果需要运行此命令,请将其设置为:If($result[0]='A'){foreach($parklistas$park){echo$result;}
try{
   $sql = getQueryOrder('park_id','ASC');// select the field park_id and order ASC
   $result = $pdo->query($sql);
}