2012-01-28 2 views
1

여러 페이지에 걸쳐있는 양식을 개발해야하지만 단 하나의 PHP 스크립트 만 필요합니다. 첫 번째 페이지에는 방문자에게 일련의 체크 박스가 제공됩니다. 선택에 따라 추가 페이지가 특정 순서로 표시되어야하고 닫는 페이지로 표시되어야합니다. 각 페이지에는 어떤 페이지 번호인지를 식별하는 숨겨진 입력이 들어 있습니다. 내가 지금까지 가지고하는 것은 이것이다 :PHP - 복잡한 다중 페이지 양식

if(!isset($currentPage)) { 
    echo $firstPage; 
} 
else { 
    echo nextPage($currentPage); 
} 

function nextPage($lastPage) { 
    switch($lastPage) { 
    case '0': 
     if(isset($opt1)) { 
     return $page1; 
     } 
     else if(isset($opt2)) { 
     return $page2; 
     } 
    case '2': 
     if(isset($opt3)) { 
     return $page3; 
     } 
    case '3': 
    case '1': 
     return $page4; 
    } 
} 

위의 코드는 제대로 시작 페이지 후 PAGE1, 페이지 2 또는 PAGE3 표시 할 수 있지만 그 이후에 상관없이 선택되었습니다 수있는 다른 무엇을 선택, 항상 지시하지 여부를 식별 닫는 페이지 방문자 (페이지 4) 내가 뭘 놓치고 있니? 아니면이 모든 잘못을 저질렀습니까?

+0

FYI : PHP _does_는 ['elseif' 키워드가 있습니다.] (http://php.net/manual/en/control-structures.elseif.php). 귀하의 경우에 'elseif'와'else if'를 사용하는 것 사이에는 차이가 없지만 콜론을 사용하여 중괄호 대신 명령문 그룹을 정의하면 'else if'를 사용하면 오류가 발생합니다. –

+0

'$ currentPage'의 출처는 어디입니까? 완료 후 항상 3 변수입니까? – Wrikken

+0

$ currentPage는 모든 페이지의 숨겨진 입력에서 파생 된 변수입니다. 죄송 합니다만 언급하는 것을 잊어 버렸습니다. @ Lèsemajesté - 'elseif'가 있지만 스크립트의 기능을 방해하지 않는 한 가독성을 위해'else if '를 선호합니다. 개인적인 선호도. – Bryan

답변

1

사용자가 survery를 완료 할 때까지 세션 변수에 응답을 저장하는 것이 좋습니다.

$_SESSION['answers'] = array_merge($_POST, $_SESSION['answers']); 

이를 :

그래서

와 사용자가 양식을 제출할 때마다 다음, 다음 페이지로 이동이 작업을 수행 할 텍스트를하고 출력하기 전에 스크립트의 상단에

session_start(); 

를 넣어 사용자가 설문 조사를 마칠 때 사용할 수있는 하나의 배열에 대한 답변을 저장합니다.

* 힌트 : 배열 병합을 사용하기 때문에 다른 페이지의 라디오 버튼이 다른 이름을 가지고 있는지 확인하십시오. like : question_1, question_2 .. *

+0

아직 답을 저장하는 것에 대해 걱정하지 않습니다. 지금 당장 우려되는 페이지를 통해 진행되고 있습니다. 페이지 흐름이 원하는대로 작동하지 않습니다. 그러나 나는 인정할 것이다, 그것은 알고있다. – Bryan

+0

내 의견을 취소합니다. 옵션 목록을 각 페이지로 가져 가지 않았기 때문에 스크립트는 처음에 옵션을 확인했는지 알지 못했습니다. 정확히 내가 잘못한 것을 깨닫는 데 필요한 정보를 제공해 주셔서 감사합니다. – Bryan

+0

비록 내가 completly 당신의 질문을 오독, 나는 여전히 도움이 행복 해요 =) –