2010-12-23 58 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

在這個頁面上會有一個形式包含與step_id的數據類型的這樣的值的隱藏字段:http://mysite.com/form-process.php

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

一旦訪問者已經在類似的網址填寫這份表格將我的腳本處理

表單提交後,我需要引導訪問者進入我的用戶創建的下一步。

我現在會做這個使用代碼類似於:

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列:) – 2010-12-23 02:56:08

0

你的帖子寫得很好,但在同一時間,它是很難理解它。這是我的回答。

這裏有一個辦法做到這一點:方法1

當用戶連接到您的Web頁面,您可以爲其指定的user_id基於會話信息,IP等每當USER_ID完成的一個步驟過程中,您可以更新數據庫以反映user_id所在的步驟。

當用戶對您的網頁發出GET請求時,您可以查找它們所在的步驟併爲其提供適當的表單。表單的創建將是服務器端腳本(例如PHP)。當他們提交表單時,您可以簡單地處理POST數據,增加他們所在的步驟(更新腳本中的變量和數據庫中的表),並向他們提供下一個表單。

另一種方法:方法2

另一種方式來做到這一點是他們把所有他們需要一次填寫表格,在他們的第一個GET請求。根據他們所在的步驟,您可以使用JavaScript或其他客戶端腳本語言隱藏/顯示某些表單。這樣做的好處是,完成所有步驟(即填寫所有表單)的過程將更快(每個步驟後都不會有服務器端查詢)。缺點是下載時間更長,上傳時間更長(在處理大容器表單的所有步驟結束時)。

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

在這兩個我所提供的計劃,我假設你正在做的這一切都在自己的網絡域名。如果您打算讓他們訪問其他網站,並在其他網站上填寫表格,那麼問題就更加困難。您可以使用內部框架來完成此操作,但您必須收到關於何時提交內部框架中的表單的通​​知。另一種可能性是通過模仿外國域名的形式,但是,如果它是一個敏感的登錄名或者很難模仿。

+0

嗨,感謝您花時間回覆。表格不會全部寄存在我的網站上。我將向我的用戶提供他們可以粘貼到網頁上的表單代碼,他們會向我提供他們已輸入代碼的網址,以便我可以引導訪問者訪問正確的網址。 但是,所有表格都將在我的網站上處理,然後我會將訪問者重定向到下一步的URL(這是我的腳本用戶將放置表單代碼的地方) – 2010-12-23 02:01:45