Skip to Content

多选问卷

建议已具备学习基础单选问卷(必做)、预约类小程序、一键登录、一对多数据模型** 预计用时:40min 基础知识点:文字、图片 核心知识点:数据模型、批量修改、聚合过滤

重点逻辑

效果概述

多选问卷效果动画

  • 点击开始按钮可跳转进入答题页面,用户答完所有题后点击结束答题按钮进入答题结果页面(页面跳转设置可参考单选问卷

  • 用户答完本题点击进入下一题或结束答题时,需要判断用户是否回答正确,并将本题的得分记录到 finalresult 表中

数据模型

多选问卷数据模型结构

  • 一个问题对应多个选项,所以问题表 question 与选项表 choice 是一对多关系,问题表中的 qidx 表示题目编号,选项表中的 right 用于标记该选项是否为正确选项,值为 1 或 0
  • answers 表记录了用户选择的每个选项及这些选项是否正确
  • finalresult 表记录了用户回答过的问题和该题的最终得分

批量修改表数据

用户完成多选后,会点击下一题按钮或结束答题按钮,需要在按钮行为中,完成用户是否答对,并将得分与否记录到 finalresult 中。首先需要将用户选择的选项批量导入到 answers 表中,再判断这些选项是否都是正确选项。

多选问卷批量修改数据配置

通过聚合过滤判断该题是否得分

多选题的得分规则是选中所有的正确选项才得分,所以需要判断用户是否选择并且只选择了所有正确选项。可以拆解为两步:

  • 用户所选项中包含正确选项

  • 所有的用户所选项中只有正确选项如果我们对比发现,用户所选答案对应的right分数等于同一道题选项本身对应的right分数,就可以确保用户所选项中至少包含了正确选项。 同时再让用户的所有答案对应的right都不小于1,就可以确保用户只选了正确的选项。

    具体流程如下

    • 用户选择的选项批量导入到 answers 表后,可设置“修改表数据”行为成功时添加 finalresult,其中参数 finalmark 为条件数据:若用户答对,标记 finalmark 为 1,否则为 0。正确的条件如下:

    正确条件设置

    • 错误的条件设置为数据为 0。

    操作步骤

    数据模型

    创建三个页面,分别命名为“开始答题页”、“答题页”、“答题结果页”。

    开始答题页

    详细设置可参考【单选问卷】的开始答题页部分。

    • 在按钮中设置点击行为:用户登录 → 获取微信用户基本信息,成功时跳转到答题页并赋值链接数据 questionid=1

    答题页

    • 显示问题内容:设置远程数据 question,类型为问题表 question,限额为 1,过滤条件为 id=questionid
    • 显示选项内容:拖入选择视图组件,设置样式为多行,打开内容中的多选按钮、可取消选中;数据来源为 choice 表,过滤条件为关系字段 question_question=链接数据questionid
    • 下一题或结束答题:
      • 设置远程数据 qcount,类型为 question,无过滤条件。
      • 使用条件式容器呈现“结束答题”和“下一题”两种状况,结束答题的条件为 questionid=qcount:count
      • 下一题行为:修改表数据-添加 answers,成功时添加 finalresult,跳转答题页,赋值 questionid=questionid+1
      • 结束答题行为:修改表数据-添加 answers,成功时添加 finalresult,跳转答题结果页。

    答题结果页

    • 新建远程数据 qcount,类型为 questions,不设限额和过滤条件,在文字组件中绑定数据并设置文字内容为“您一共完成了 远程数据/qcount:count 道题”。
    • 新建远程数据 result,类型为 finalresult,不设限额,设置过滤条件为 account_账户=已登陆用户/ID,在文字组件中绑定数据并设置文字内容为“您的得分是 远程数据/result/finalmark:sum 分”。
Last updated on