如何通过OnClick返回带有新变量的switch语句?

时间:2015-12-02 17:36:57

标签: javascript php jquery html

我正在建立一个俱乐部的入学申请表。我无法将用户从一个页面转到另一个页面。每个页面都是一个模块,通常是一个表单。并且它们可以在位置上不同,因为用户可以改变页面在进气口中的位置。

以下是我的数据库的外观。俱乐部可以有一个或多个摄入量。摄入量由多个模块组成。数据库模型如下所示:

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返回第一个开关?

1 个答案:

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