0

在我的网站上,我有一个县的下拉列表...

<form method="post" action="/people.php" >
            <select name="county" onchange="this.form.submit()" >
                <option>--Select a County--</option>
                <option value="Avon">Avon</option>
                <option value="Bedfordshire">Bedfordshire</option>
                <option value="Berkshire">Berkshire</option>
            </select>
</form>

然后我在我的人员页面上有我的查询......

$county = $_POST['county'];

$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND County = :county");
$sth->execute(array(':county' => $county));

我想使用 URL 重写在我的 url 中包含县,所以当您在选择县后转到页面时,它不会显示为

'www.mysite.com/people.php'

但显示为

'www.mysite.com/people-in-avon'

我仍然是 PHP 的新手,但是,如果我想这样做,我是否需要使用 GET 方法,并将我的数据发布到 php 页面,然后重定向到 people.php?在 PHP 中在页面上进行查询是不好的做法吗?

我希望这是有道理的?

4

2 回答 2

2

您首先需要使用带有一些基本重定向的 .htaccess 才能使用 people-in-[country] URL。

RewriteEngine on
RewriteRule ^people-in-(.*) /people.php?county=$1 [L]

在你的 people.php 中:

<?php

// you county is set in GET via the .htaccess
$county = $_GET['county'];

// database query
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active != '' AND County = :county");
$sth->execute(array(':county' => $county));

?>

要创建 URL,您应该替换特殊字符、重音符号、空格......但是如果您的县在一个单词中,没有特殊字符,您可以这样做:

<?php 

// to redirect
$county = $_POST['county'];
$url = '/people-in-' . $county;
// redirect
header('Location:' . $url);

要通过 ID 检索您的县,您可以执行类似的操作(伪代码):

RewriteEngine on
RewriteRule ^people-in-.*-([0-9]+) /people.php?county_id=$1 [L]

显示县:

// you county_id is set in GET via the .htaccess
$county_id = $_GET['county_id'];

前往县城的路线:

// to redirect
$county_id = $_POST['county_id'];

// fetch the county by id
// BASIC string cleaning
$county = str_replace(' ', '-', $county);

$url = '/people-in-' . $county . '-' . $county_id;

// redirect
header('Location:' . $url);
于 2012-10-24T07:33:22.513 回答
1

用这个

<form method="post" action="/people.php" >
            <select name="county" id="selectform" >
                <option>--Select a County--</option>
                <option value="Avon">Avon</option>
                <option value="Bedfordshire">Bedfordshire</option>
                <option value="Berkshire">Berkshire</option>
            </select>
</form>

在java脚本中

<script>
 $(document).ready(function(){
 $("#selectform").change(function(){
  window.location="www.mysite.com/people-in-"+$(this).val()+";
 })
</script>

.htaccess文件使用这个

RewriteEngine On
RewriteRule   ^people-in-(.*) people.php?option=$1  [QSA,L]

并且在people.php

$value=explode("-",$_GET['option']);
$newvalue=$value[2];
于 2012-10-24T07:32:55.317 回答