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変数はリロードに固執していないようですが。その変数をセッションする必要がありますか?(それでも常にリセットするという問題があります)

または、他のアプローチを実装しますか?

「ヘッダーがすでに送信されている」ことを避けるために、別の2番目のページにリダイレクトして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.
}

また、そのWeb2.0効果にはjQueryを使用することをお勧めします。ドロップダウンメニューから選択すると、ページをリロードせずに物事が魔法のように動くのは本当に素晴らしいことです。

于 2012-08-23T17:40:16.780 に答える