2010-04-02 4 views
2

Codeigniter가있는 설문 조사를 작성하고 있습니다. 코드가 너무 길어서 섹션으로 나눕니다 (약 5 개).Codeigniter의 다중 파트 폼

각 섹션의 유효성을 검사하고 사용자가 "다음"을 클릭 한 후 db에 제출하려면이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 필자는 전에는 여러 단계의 프로세스를 만들지 않았습니다.

멍청한 놈에 대한 조언이 있으십니까? :)

답변

0

CI에는 내장 된 다중 페이지 양식이 없으므로 Drupal과 같은 콘텐츠 관리 시스템이 지원합니다.

아마도 가장 좋은 방법은 각기 고유 한 form_validation 배열, 제어기 기능 및보기가있는 5 개의 별도 양식을 작성하는 것입니다. 사용자가 양식 1을 성공적으로 제출하면 양식의 유효성을 검사하고 (부분) 데이터를 데이터베이스에 입력 한 다음 두 번째 양식으로 재 지정하십시오. 당신이 언급하고있는 기록을 알 수 있도록 다음 형태의 URL에서 데이터베이스 ID 번호 또는 사용자 정의 트랜잭션 ID 번호를 포함 :

http://www.mysite.com/mycontroller/form1
http://www.mysite.com/mycontroller/form2/transaction_id

CI의 문서가 큰

,이 양식 유효성 검사 라이브러리를 사용하면 대부분의 방법으로 얻을 수 있습니다. http://codeigniter.com/user_guide/libraries/form_validation.html

4

완전히 동의하지 않습니다. 확인 후 모든 것을 세션에 저장 한 다음 확인 페이지에 모든 결과를 표시하십시오. 사용자가 확인하면 실제로 응답 한 각 필드를 관련 데이터베이스 테이블에 저장하십시오.

여름의 아이디어는 사용자의 의도하지 않은 잘못된 입력이나 잘못된 입력에 대해 열려 있습니다. 이들이 http://www.mysite.com/mycontroller/form2/transaction_id을 북 마킹하거나 의도적으로 transaction_id를 변경하는 것을 막을 수있는 방법은 없습니다.

저는 여름철 아이디어를 사용하여 하나의 다중 페이지 양식을 만들고, 다른 하나는 codeigniter의 세션 클래스를 사용하지만 데이터베이스에 세션을 저장하고 다른 페이지는 데이터베이스 테이블에 저장하지만 로그인 시스템을 사용하여 사용자. 마지막 옵션은 가장 강력하지만 실제적인 고통입니다. 세션 시스템이 가장 좋습니다.

+0

일시적으로 약 100 개의 값을 저장하기 위해 이와 같은 세션 데이터를 사용하는 것은 나쁜 생각입니까? –

+0

나는 그렇게 생각하지 않는다. 세션이 서버로 되돌아 오는 모든 게시물로 다시 작성된다는 사실을 명심하십시오. 동시 사용자 수가 많고 각각에 대해 큰 세션 배열이있는 경우 확장 성 문제가 발생할 수 있습니다. – Kris

+0

그게 전부지만,로드 된 뷰가 다른 컨트롤러에서 오는 경우 어떻게됩니까? 즉, x 옵션 중 하나를 선택하면 유효성 검사 프레임 워크가 실패합니다. –