2011-01-21 5 views
3

검색 결과가있는 페이지와 검색 양식이있는 페이지가 있습니다. 검색 양식에서 나는 "이 카테고리에서 검색"체크 박스를 가지고 있습니다. 무엇 나는 기본적으로 그것을 확인하고 있어요 :체크 박스 상태가 기본적으로 "확인 됨"문제

if(!isset($_SESSION['inthiscat'])){ 
    $_SESSION['inthiscat'] = 'on' ; 
    $checked = 'checked'; 
} 
$_GET['inthiscat'] = $_SESSION['inthiscat']; 

체크 박스 코드 : 입력 유형 = "체크 박스"이름 = <?=$checked?> "inthiscat". 결과 index.php? inthiscat = $ _ GET [ 'inthiscat'] 다음 페이지로 링크하십시오. 문제는 다음 검색 결과로 갈 때 "이 카테고리에서 검색"의 선택을 취소했을 때입니다. 그것을 고치는 방법과 내가 뭘 잘못하고있는거야? 물론 세션 시작.

답변

1

먼저 세션 변수가 필요합니까? 상자가 이되도록하려면 GET 매개 변수가 지정되지 않은 경우을 선택하면 세션이 전혀 필요하지 않습니다. 배열은 좋은 방법이 아닙니다 GET 할

1) 지정 값 :

<?php 
session_start(); 
//...... 
//...... 
$checked='checked'; 
if(isset($_REQUEST['inthiscat'])) { 
    // Form input and url GET parameters take precedence 
    if($_REQUEST['inthiscat'] != 'checked') { $checked = ''; }; 
} else if(isset($_SESSION['inthiscat'])) { 
    // Next, use session variable if it exists 
    if($_SESSION['inthiscat'] != 'checked') { $checked = ''; }; 
}; 
$_SESSION['inthiscat']=$checked; 
?> 

참고 :이 경우 사람의 동작을 유지하려는 가정

는 GET 매개 변수를 제거합니다.

2) 귀하의 양식 제출에 올바른 구문을 사용하고 있다고 가정합니다.

3) IMO, 사용자가 명시 적으로 GET 매개 변수로 후속 URL에서 전달하므로 SESSION 변수를 제거 할 수 있습니다. 또는 URL에 GET 매개 변수를 사용하지 마십시오.

+0

요점은 페이지가 처음로드 될 때 "확인"해야한다는 것입니다. 상태를 설정 해제 한 경우 다음 페이지에서 설정을 해제해야합니다. 나는 이것을 어떻게하는지 모른다. 필요한 경우 더 많은 코드를 추가 할 수 있습니다. – TonyM

+0

수정 된 답변입니다. –

+0

JP19이 세션에서 새 데이터를 저장하지 않을 것입니다. 또한 $ _GET에 값을 할당하는 이유는 무엇입니까? '$ _GET [ 'inthiscat'] = $ _SESSION [ 'inthiscat'];'와 같이. – cbrandolino

0

문제 : 확인란을 선택 취소하고 다음 페이지로 이동하면 $_SESSION['inthiscat']은 여전히 ​​설정되지 않습니다. 어디에서 변경 했습니까?

if (isset($_GET['inthiscat'])) { 
    $_SESSION['inthiscat'] = $_GET['inthiscat']; 
} 
if (!isset($_SESSION['inthiscat'])) { 
    $checked = 'checked'; 
} else { 
    if ($_SESSION['inthiscat'] == 'on') { 
     $checked = 'checked'; 
    } else { 
     $cheked = ''; 
    } 
} 

이 HTML 가정 : <INPUT type="checkbox" name="inthiscat" checked="<?=$checked?>" value="on" />

그래서 그것을 수행하는 것은 :

  1. 가있는 경우, 그것을 할당, 데이터 가져 오기에 대한보고를 여기

    코드입니다 ("on"또는 " ') 세션에;
  2. SESSION이 없다면 (즉, GET도 없음) 사용자가 방문하는 종류의 첫 페이지이므로 확인됩니다.
  3. inthiscat의 SESSION이있는 경우 세션이 첫 번째 페이지가 아니며 GET 데이터가 SESSION에 할당되었음을 의미합니다. 따라서 on 인 경우 표시가 나타납니다. 그렇지 않으면 그렇지 않습니다.