2010-12-23 10 views
1

나는 사용자가 계단식 프로세스를 만들 수있는 스크립트 작업을하고있다.mysql과 PHP로 다단계 프로세스 만들기

단계는 방문자가 양식을 작성한 후 방문자가 작성한 다음 단계로 이동하는 URL로 방문자를 보내는 것으로 구성됩니다. 각 사용자는 원하는만큼 많은 단계를 생성 할 수 있으며 각 단계의 URL은 고유합니다.

올바른/가장 효율적인 방법으로이 작업을 수행하고 있는지 확실하지 않아 이에 대한 몇 가지 질문이 있습니다.

step_id  user_id  step_url     step_order 
    1   1  example.com?step=1    1 
    2   2  test.com?step=1     1 
    3   1  example.com?step=3    2 
방문자가 step_url로 이동합니다

: example.com?step=1를 USER_ID 기준 : 1

이 페이지에있을 것입니다 내가 여기 시작하기 전에 나의 테이블 구조의 간단한 버전입니다 http://mysite.com/form-process.php

,536 : 방문자가 유사한 URL에서 내 스크립트에 의해 처리 될 것입니다이 양식을 작성하면

<input type="hidden" name="step_id" value="1"> 

이 같은 step_id의 가치와 숨겨진 필드를 포함하는 형태

양식이 제출되면 방문자를 내 사용자가 작성한 다음 단계로 안내해야합니다.

나는 현재 이와 유사한 사용하여이 코드를 할 것 :

여기
SELECT step_url FROM table WHERE step_order='$current_step_order'+1 

이에 대한 내 질문이 있습니다 :

  1. 는이 작업을 수행하는 가장 좋은 가장 효율적인 방법입니다은? 아니면 더 좋은 방법이 있습니까?

  2. step_id 열이 자동 증가이므로 ... 사용자가 새 단계를 삽입 할 때마다 주문 열을 1 씩 증가시키는 방법은 무엇입니까?

시간을내어 읽어 주셔서 감사합니다.

답변

0

문제의 단계에 부모 자식 관계가 있다고 생각합니다. 그래서 그 단계의 자녀가있는 단계를 참조하면 더 좋을 것입니다. 보조 필드로 단계 번호를 사용할 수 있습니다.

이 스키마

step_id  user_id  step_url    parent_id  step_order 
    1   1  example.com?step=1  null   1 
    2   2  test.com?step=1   null   1 
    3   1  example.com?step=3  1    2 

것 및 다음 단계를 찾기 위해 당신이

SELECT step_url FROM table WHERE parent_id='$current_step_id' 

계층 적 데이터 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

니틴 샤르마

+0

입력 해 주셔서 감사합니다. 나는 계층 적 구조를 읽고 내 테이블에 parent_id 열을 포함했습니다. :) –

0

귀하의 게시물 잘 작성하지만 동시에 그것의 이해하기 어렵다. 여기에 대한 나의 시도가있다.

는 여기를 수행하는 한 방법 : 방법 1

사용자가 웹 페이지에 접속하면 USER_ID가 한 단계를 완료 할 때마다 세션 정보, IP 등을 기반으로 그들에게 USER_ID을 할당 할 수 있습니다 프로세스에서 user_id가있는 단계를 반영하도록 데이터베이스를 업데이트 할 수 있습니다.

사용자가 귀하의 웹 페이지에 대한 GET 요청을하면 해당 페이지가있는 단계를 찾아보고 적절한 양식을 제공 할 수 있습니다. 양식 작성은 서버 측 스크립트 (예 : PHP)가됩니다. 양식을 제출하면 POST 데이터를 처리하고, 스크립트가있는 단계와 데이터베이스의 테이블을 모두 업데이트하여 단계를 증가시키고 다음 양식을 제공 할 수 있습니다.

또 다른 방법 : 방법이

그들의 첫 GET 요청에 그들에게 한 번에 작성하는 모든 양식을 전송하는 것입니다 할 수있는 또 다른 방법. JavaScript 나 다른 클라이언트 측 스크립팅 언어를 사용하여 특정 양식을 숨기거나 표시 할 수 있습니다. 이렇게하면 모든 단계를 완료하는 과정 (즉 모든 양식 작성)이 훨씬 빨라집니다 (각 단계마다 서버 측 쿼리가 없을 것입니다). 단점은 다운로드 시간이 길어지고 업로드 시간이 오래 걸릴 것이라는 점입니다 (거대한 컨테이너 양식이 처리되는 모든 단계가 끝날 때). 내가 제공 한 계획 모두에서

@@@@@@@@@@@@

, 나는 당신이 당신의 자신의 웹 도메인에서이 작업을 수행하는 것으로 가정했다. 다른 웹 사이트를 방문하게하고 다른 웹 사이트의 양식을 작성하면 문제가 더 어려워집니다. 내부 프레임을 사용하여이 작업을 수행 할 수는 있지만 내부 프레임의 양식이 제출되는 시점에 대한 알림을 받아야합니다. 또 다른 가능성은 외부 도메인의 양식을 에뮬레이션하는 것입니다. 그러나 로그인이 중요하거나 그렇지 않으면 에뮬레이션하기가 어렵습니다.

+0

안녕에 대한 자세한 볼 수 호출 할 수 있습니다, 회신에 시간을내어 주셔서 감사합니다. 양식이 모두 내 웹 사이트에서 호스팅되지는 않습니다. 내 사용자에게 웹 페이지에 붙여 넣을 수있는 양식 코드가 제공되며 방문자에게 올바른 URL로 안내 할 수 있도록 코드를 입력 한 URL이 제공됩니다. 그러나 모든 양식이 내 웹 사이트에서 처리되고 다음 단계의 URL로 방문자가 리디렉션됩니다 (내 스크립트 사용자가 양식 코드를 입력하게됩니다) –