我正在开发一个脚本,允许用户创建一个步进过程。
步骤将包括将访问者发送到网址,他们将填写表格,然后转到用户创建的下一步。每个用户都可以根据自己的意愿创建任意数量的步骤,每个步骤的网址都是唯一的。
我不确定我是否以正确/最有效的方式执行此操作,因此我对此有一些疑问。在我开始之前是我的表结构的简单版本:
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
以下是我对此的疑问:
这是实现这一目标的最有效方法吗?或者有更好的方法吗?
由于step_id列是自动递增的...每次用户插入新步骤时,如何将订单列增加1?
感谢您花时间阅读本文。
保
答案 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