0

我有一个从 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 个查询都在一个页面中运行,单击链接只会加载新排序的列表来替换旧列表?

最重要的是,我还想要一个 AZ 的链接,单击一个可以将页面向下跳转到排序方法的字母,例如主题公园列表按状态排序,单击“K”将向下跳转到页面中的公园堪萨斯。我正在考虑使用 html 锚点的这些链接,但是我将如何将结果回显到 26 个卡盘(每个字母 AZ 一个)。

对不起,冗长的问题,但我很难过。谢谢

4

3 回答 3

1
 //make a function  

function orderby($select, $var){
$sth = $dbh->prepare('SELECT {$select} FROM tpf_parks ORDER BY {$var}');
$sth->execute();
$result = $sth->fetchAll();
echo $result;
}
// run a function    
orderby ("park_id, name, town, state, country","name ASC");
//make all the functions you need like this
于 2013-04-04T20:56:45.113 回答
0

也许最好使用排序功能仅通过某些脚本进行输出。(http://tablesorter.com/等)

于 2013-04-04T20:45:56.460 回答
0

试试这个功能:

   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);
}
于 2013-04-04T21:02:57.057 回答