0

我有一个 PHP 结果页面,它从“第一遍”开始,返回所有行。这是该县所有披萨店的搜索列表。

SELECT * from pizzeria;

然后用户可以深入了解更多细节......该页面还有一个 CSS 下拉菜单,用户可以在其中选择特定社区(带有 URL):

href="samepage.php?neighborhood=HELLSKITCHEN"

然后在我拿起后更改查询$_GET[]

SELECT * from pizzaria WHERE nbh=(the $_GET[] variable sent in the URL);

但我希望页面能够自行调用,并且我header("Cache-Control:no-cache");在顶部。

我正在尝试使用该isnull()函数创建一个首次通过或首次访问标志变量:

if (is_null($firstpass)) {
    $query = SELECT all the records from the pizzaria table
} else {
    $query = SELECT only the records WHERE I $_GET[] the value from the reloaded URL
}

似乎该$firstpass变量不会坚持重新加载。我应该 SESSION 那个变量吗?(虽然仍然有不断重置它的问题)

或者也许实施其他一些方法?

我知道我可以重定向到单独的第二页并将 javascript 重定向回此页面以避免“标头已发送”,但我想避免往返返回客户端。

是否有使用新信息重新加载的已知最佳实践?有点新的 PHP 在这里。谢谢

4

2 回答 2

1

也许我不太了解您的问题,但您为什么不这样做:

if (!isset($_GET['example'])) {
    $query = 'SELECT * FROM pizzerias';
} else {
    $query = 'SELECT * FROM pizzerias WHERE pizzeria = \'.mysql_real_escape_string($_GET['example']).\' LIMIT 1';
}

在第一次通过时,似乎 $_GET 变量仅在用户选择比萨店时设置?

于 2012-08-23T17:27:17.087 回答
0

这是一个更有针对性的答案。

注意: mysql_*功能正在贬值,因此请改用 PDO。在我的示例中,我是半懒惰的,不使用 PDO。

//Connect to database and define table up here
...
if(!isset($_GET['neighborhood')){
    $q = "SELECT * FROM pizzeria;";
}else{
    $q = sprintf("SELECT * FROM pizzeria WHERE nbh=%s",mysql_real_escape_string($_GET['neighborhood']));
}
$query = mysql_query($q);
foreach($row = mysql_fetch_array($query,MYSQL_ASSOC){
    //display the updated view of restaurants.
}

我还建议您使用jQuery来实现 Web 2.0 效果。当您从下拉菜单中选择并且无需重新加载页面的情况下神奇地移动时,这真的很棒。

于 2012-08-23T17:40:16.780 回答