使用mysql和php创建一个多步骤的过程

时间:2010-12-23 01:25:50

标签: php mysql

我正在开发一个脚本,允许用户创建一个步进过程。

步骤将包括将访问者发送到网址,他们将填写表格,然后转到用户创建的下一步。每个用户都可以根据自己的意愿创建任意数量的步骤,每个步骤的网址都是唯一的。

我不确定我是否以正确/最有效的方式执行此操作,因此我对此有一些疑问。在我开始之前是我的表结构的简单版本:

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

访问者将被user_id定向到step_url:example.com?step=1:1

在此页面上将有一个表单,其中包含一个隐藏字段,其中包含step_id的值,如下所示:

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

访问者填写此表单后,我的脚本会在类似于http://mysite.com/form-process.php

的网址处理该表单。

表单提交后,我需要将访问者引导到用户创建的下一步。

我目前使用类似的代码执行此操作:

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

以下是我对此的疑问:

  1. 这是实现这一目标的最有效方法吗?或者有更好的方法吗?

  2. 由于step_id列是自动递增的...每次用户插入新步骤时,如何将订单列增加1?

  3. 感谢您花时间阅读本文。

2 个答案:

答案 0 :(得分:1)

你的帖子写得很好,但同时很难理解它。这是我尝试回答的问题。

以下是一种方法:方法1

当用户连接到您的网页时,您可以根据会话信息,IP等为其分配user_id。每当user_id完成流程中的步骤时,您都可以更新数据库以反映user_id所在的步骤。

当用户对您的网页发出GET请求时,您可以查找他们所处的步骤并为他们提供相应的表单。表单的创建将是服务器端脚本(例如PHP)。提交表单时,您可以简单地处理POST数据,增加它们所处的步骤,(更新脚本中的变量和数据库中的表),并为它们提供下一个表单。

另一种方式:方法2

另一种方法是在第一次GET请求时立即向他们发送他们必须填写的所有表格。您可以根据它们所使用的步骤,使用JavaScript或其他客户端脚本语言隐藏/显示某些表单。这样做的好处是完成所有步骤(即填写所有表格)的过程会快得多(每个步骤后都不会有服务器端查询)。缺点是下载时间会更长,上传时间也会更长(在处理大量容器表单的所有步骤结束时)。

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

在我提供的两个计划中,我假设您在自己的网络域名中执行此操作。如果您打算让他们访问其他网站,并在其他网站上填写表格,那么问题就更加困难了。您可以使用内部框架来执行此操作,但是您必须接收有关何时提交内部框架中的表单的通​​知。另一种可能性是通过模拟外部域上的表单,但是,如果它是一个敏感的登录,或者很难模仿它。

答案 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/

Nitin Sharma

相关问题