2013-05-15 4 views
1

저는이 작업을 시작하는 데 어려움을 겪고 있습니다."이 작업 기억하기"루틴을 어떻게 성공적으로 구현할 수 있습니까?

동일한 페이지에 2 개의 양식이 있습니다.

첫 번째 양식은 사용자가 주소, 우편 번호, 거리, 육상, 심지어 주 이름과 같은 여러 검색 필터 중 하나를 입력 할 수있는 검색 창을 제공합니다.

검색 결과가 여러 개인 경우 Advanced Search 링크를 클릭 할 수 있습니다.

Advanced Search에는 사용자가 하나 이상의 상자를 선택하여 검색 결과를 좁힐 수있는 여러 확인란이 있습니다.

위대한 작품입니다.

이제는 사용자가 쿠키를 사용하여 검색 결과를 "저장"하는 기능을 제공하므로 다음에 사용자가이 페이지를로드 할 때 마지막으로 저장된 검색 결과 이/그녀의 기본값이됩니다 검색 페이지가 변경 될 때까지 또는이 마지막 작업을 지우는 쿠키를 제거 할 때까지

이것은 지난 번이 페이지를 검색 할 때 사용자의 마지막 작업을 기억하는 것과 같습니다.

제 생각에는 PHP 쿼리의 Session 변수에 SQL 쿼리를 저장하는 것입니다. 내가 "만들려고하고 "Remember This Action" 버튼을 사용자가 클릭, 나는 그냥 쿠키에 세션 변수 값 저장 내 PHP 코드를 가질 수 그리고

. 즉

, 내가 좋아하는 뭔가를 할 것입니다 이 :

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

을 마지막으로, 나는 캘리포니아 : 다음

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

Session("LastAction") = $tsql 

그리고 단순히 않는 내 PHP 페이지에 "Remember This Action" 버튼 포스트가 n은 우리의 페이지에 "반복 마지막 액션"버튼을 제공하며이하는 모든 나는 데 많은 문제

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

하나는 내가 심지어이 쿼리를 넘어 얻을 수 있다는 것입니다 수 있습니다 :

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

Session("LastAction") = $tsql 

세션 ("LastAction") = $ TSQL 내가 점점 계속

"무효"오류, 나는 아주, 아주 약한 PHP를하지만 열심히 와서 속도.

는 귀하의 지원은 크게 나는 여기에 몇 가지 아기 단계를 만들었

을 감사합니다.나는 수 있어요

이 올바른 구문으로 활용하려면 다음

$_SESSION["LastAction"] = $tsql; 

내가 PHP에서이 라인의 동등한 것입니다, 이제 올바른

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

을 설정할 수도입니까?

$tsql = Request.Cookies("LastAction") 

위의 내용은 저의 가장 좋은 것으로 꼽았습니다. 그러나 그것이 옳다고 생각하지 않습니다.

기본적으로 다른 페이지에 "Remember Last Action" 버튼을 넣으려고합니다.

나서 사용

$의 TSQL = Request.Cookies ("LastAction")

해당 페이지에 다른 페이지에서 값을 잡아.

답변

0

기본적으로 SQL 쿼리를 쿠키 (사용자 편집 가능 데이터)에 저장합니다.

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

에 관계없이, 대신 쿠키에 저장된 sessid에 따라 세션을 부활로 장난, 나는이 serialized 배열로 쿠키로 검색 플래그를 저장하는 것이 좋습니다 것, 그리고 당신의 할 실행 - 오프 귀하가 재사용해야 할 때 해당 데이터를 사용하는 the-mill 검색.

기본적으로

, 당신은 할 수 있습니다 :

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

그리고 과정을 역전,

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

당신은 $ search_opts을하다가 위치를 자신의 코드에서 파악해야합니다 및 사용하는 방법 나중에 해당 검색을 실행하려면 해당 부분을 확인하는 코드가 표시되지 않습니다.

+0

다음은 @mkumpan입니다. 추천하는 방법에 대한 아이디어가 있으십니까? –

+0

전부는 아니며 사용자가 직접 저장된 검색에서 검색 옵션을 가져올 위치를 파악해야합니다 (검색 관련 검색어를 작성할 때 POST의 플래그를 저장하는 것이 가장 가능성이 높음). 재사용 옵션에서 검색 쿼리를 다시 작성, 실행 및 렌더링 할 코드를 찾습니다. 그러나 원래 답변의 쿠키/직렬화 방법에 대해 자세히 설명했습니다. –

관련 문제