我正在建立一个俱乐部的入学申请表。我无法将用户从一个页面转到另一个页面。每个页面都是一个模块,通常是一个表单。并且它们可以在位置上不同,因为用户可以改变页面在进气口中的位置。
以下是我的数据库的外观。俱乐部可以有一个或多个摄入量。摄入量由多个模块组成。数据库模型如下所示:
table: intake
intake_id(P) club_id
12345 99999
12346 99999
12347 99998
table: intake_has_module
intake_id(P) module_id position
12345 1 2
12345 2 1
12345 3 3
12346 1 1
12346 2 2
etc.
table: module
module_id(P) name
1 Personal Information
2 Terms and Conditions
3 Subscriptions
(Dummy data)
在这里,我从相应的俱乐部获得intake_id
$intake_sql = $db->sql_query('SELECT intake_id FROM fit_vg_intake WHERE club_id = ' . (int)User::currentUser()->getClubID());
$intake_sql_2 = $db->sql_fetchrow($intake_sql);
在这里,我从俱乐部的摄入量中获得了位于第一位置的module_id
$module_sql = $db->sql_query('SELECT module_id FROM fit_vg_intake_has_module WHERE position = 1 AND intake_id = ' . $intake_sql_2['intake_id']);
$module_sql_2 = $db->sql_fetchrow($module_sql);
然后我在一个看起来像这样的开关中使用这个module_id:
switch ($module_sql_2['module_id']) {
case 1:
generate_page('intake/personalinformation.twig');
break;
case 2:
generate_page('intake/termsandconditions.twig');
break;
case 3:
generate_page('intake/subscriptions.twig');
break;
default:
generate_page('intake/main.twig');
break;
}
所以这部分对我来说正常。用户可以在设置面板中切换每个模块的位置。 现在我的问题&问题:
假设用户在条款和条件模块上。这是module_id 2和位置1.当他点击确认他已接受条款和条件的按钮时,他应该被移动到模块,其位置为module_id = 2的位置+。
我尝试过的: 我尝试在按钮上添加onClick。当点击javascript函数时,会调用名为next_module()的函数,其中包含一个名为accepted-terms的操作。 我将此操作传递给我使用另一个开关的php文件:
switch ($action) {
case 'accepted-terms':
$position_sql = $db->sql_query('SELECT position FROM intake_has_module WHERE module_id = 2 AND intake_id = ' . $intake_sql_2['intake_id']);
$position_sql_2 = $db->sql_fetchrow($position_sql);
break;
default:
break;
}
在这个开关中你可以看到我得到了module_id = 2的模块位置。 它返回1是正确的。现在我可以获得位置为1 + 1的module_id。这是我走了多远。基本上我的问题是:当有人点击按钮时,如何使用新的module_id返回第一个开关?
答案 0 :(得分:0)
我通过使用处理程序数组并将位置添加到url的后面来修复此问题,如/ intake / 1,/ intake / 2等
$handler_page = System::getHandlerArray()[0];
if($handler_page == null){
$handler_page = '1';
}
在这里,我检查用户是否在/摄入。如果他是因此System :: getHandlerArray()[0] == 0, 我为第一个位置分配1给变量。
然后在我的模板中使用此变量,我这样做:
$template->assign_var('position', (int)$handler_page + 1);
我添加1因为我想将当前位置+ 1分配给此变量,因为我将使用它将带有onClick的页面指向下一个位置,如下所示:
<script>
function next_module() {
window.location.href = ('/intake/' + {{ position }});
}
</script>