我有一个PHP结果页面,它以“first-pass”开头,返回所有行。这是该县所有披萨店的搜索列表。
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
变量不会重新加载。我应该这个变量吗? (虽然仍有不断重置的问题)
或者可能实施其他方法?
我知道我可以重定向到另一个第二页并回到此页面以避免“已发送标题”,但我希望避免往返客户端。
是否有关于使用新信息重新加载的已知最佳做法?在这里有点新的PHP。感谢
答案 0 :(得分: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变量?
答案 1 :(得分: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效果。当您从下拉菜单中选择并且没有页面重新加载时神奇地移动时,这真的很不错。