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