1

私はこの仕事を始めるのに本当に苦労しています。

同じページに 2 つのフォームがあります。

最初のフォームは、ユーザーが住所、郵便番号、通り、土地、さらには州名などのいくつかの検索フィルターのいずれかを入力するための検索ボックスを提供します。

Advanced Search検索結果が複数ある場合、ユーザーはリンクをクリックできます。

これAdvanced Searchには、ユーザーが 1 つ以上のボックスをオンにして検索結果を絞り込むことができるいくつかのチェックボックスが含まれています。

これはうまくいきます。

現在の問題は、おそらく Cookie を使用して検索結果を「保存」する機能をユーザーに提供することです。これにより、ユーザーが次にこのページをロードしたときに、前回保存した検索結果が変更されるまでデフォルトの検索ページになります。または、この最後のアクションを一掃する Cookie を削除するまで。

これは、前回このページを検索したときのユーザーの最後のアクションを覚えているようなものです。

これまでの私の考えでは、まず、SQL クエリを php コードのセッション変数に格納することです。

次に、ユーザーが"Remember This Action"作成するボタンをクリックすると」、php コードでそのセッション変数の値を Cookie に保存することができます。

言い換えれば、私は次のようなことをします:

$tsql = "SELECT  Name, FeatType,
         MinX, MinY, MaxX, MaxY
         FROM mytable
ORDER BY ListOrder, Name DESC";

Session("LastAction") = $tsql

そして、"Remember This Action"単純に行う私のphpページにボタンを投稿させます:

Cookies("LastAction") = Session("LastAction")
Cookies("LastAction").Expires = Date() + 365 ' expires in one year

最後に、ページに「最後のアクションを繰り返す」ボタンを提供できます。

$tsql = Request.Cookies("LastAction")
$stmt = sqlsrv_query( $conn, $tsql);

私が抱えている多くの問題の 1 つは、このクエリを超えることさえできないということです。

$tsql = "SELECT  Name, FeatType,
         MinX, MinY, MaxX, MaxY
         FROM mytable
ORDER BY ListOrder, Name DESC";

Session("LastAction") = $tsql

「無効」エラーが発生し続けます

  Session("LastAction") = $tsql

明らかに、私はphpが非常に苦手ですが、スピードを上げるために一生懸命働いています。

あなたの援助は大歓迎です

私はここでいくつかの赤ちゃんの一歩を踏み出しました。

これを構文的に正しくすることができます:

$_SESSION["LastAction"] = $tsql;

正しい設定もできます

setcookie('LastAction',$_SESSION["LastAction"],time() + (86400 * 365)); // 86400 = 1 year

では、php でこの行に相当するものは何ですか?

 $tsql = Request.Cookies("LastAction")

上記は私の最善の試みでしたが、それが正しいとは思いません。

私は基本的に"Remember Last Action"ボタンを別のページに配置しようとしています。

次に使用します。

$tsql = Request.Cookies("LastAction")

別のページからこのページに値を取得します。

4

1 に答える 1

0

ここで行っていることは、基本的に、SQL クエリを Cookie (ユーザーが編集可能なデータ) に保存することです。

setcookie('LastAction',$_SESSION["LastAction"] /*We're saving the value, not the session. */,time() + (86400 * 365)); // 86400 = 1 year

とにかく、Cookie に保存された sessid に基づいてセッションを復活させるのではなく、検索フラグをシリアル化された配列として Cookie に保存し、そのデータを使用してすぐに使える検索を行うことをお勧めします。再利用する必要があるとき。

基本的に、次のことができます。

$saved_search = serialize($search_opts);
setcookie('SavedSearch',$_SESSION["LastAction"],time() + (86400 * 365));

そしてプロセスを逆にするために、

$saved_search = $_COOKIE['SavedSearch'];
$search_opts = unserialize($saved_search);

$search_opts を引っ掛ける場所と、後でそれらを使用して検索を実行する方法を独自のコードから把握する必要があります。

于 2013-05-17T13:44:12.760 に答える