LimeSurvey 启动投票后添加问题选项

时间: 2010-4-23 - 分类: PHP - 评论: 1 - 阅读: 340 次

Limesurvey是最近项目中引入的一个很棒的投票系统。

LimeSurvey(前身为PHPSurveyor)是一款开源的在线问卷调查程序,它用PHP语言编写并可以使用MySQL,PostgreSQL或者MSSQL等多种数据库,它集成了调查程序开发、调查问卷的发布以及数据收集等功能,使用它,用户不必了解这些功能的编程细节。

本系统包括了分支、自定义页面布局和设计(使用web template system),并且提供了基本的统计分析功能。调查可以匿名访问也可以限制为拥有“访问一次”令牌的用户参加,从而我们能得到匿名数据或者参与者与结果相分离的数据

虽然初始操作的时候会有些复杂,但是上手就发现功能真的太强大了。不过使用中马上就发现一个严重的问题:Limesurvey的调查在启动了之后就不允许再添加选项,只允许修改选项的文字等内容。这样就真的杯具了,领导常常要求在投票进行到一半,增加选项,这下郁闷了。

既然程序上有逻辑判断不能增加选项,那我们就直接到数据库,看看数据库的设计逻辑,最后还是还是让我看出了端倪,直接修改数据库结构,实现在启动调查后添加选项的功能,hiahiahia…

limesurvey的一个投票,基本上有2个组成,一个是投票选项表lime_answers,一个是投票结果表lime_survey_21437,后面的数字是投票结果的数字id。

首先在limesurvey的投票选项表lime_answers增加自己要投票的选项,qid为问题所在的组的id,code跟sortorder一般是一样的,表示选项的顺序,照例添加好。

然后到投票结果表lime_survey_21437中,修改表结构,在投票结果表lime_survey_21437中,每个选项的值,都被做成一个字段,形如:21437X3X1010。观察一下,各个字段名字一般都是一系列下来:21437X3X101,21437X3X102,21437X3X103。这里的字段,其实就是跟投票选项一一对应的,你在投票选项中增加的选项,就要在这个结果表中建立相应的字段名,以存储这个字段的投票结果。

虽然通过了这样直接修改数据库的方式解决了问题,但是感觉还是比较不爽,因为数据库操作很麻烦。而且不小心容易出错。期望limesurvey可以改进这一点。也不知道是为什么limesurvey要限制这样的操作。

http://www.clh.cc/html/work.htmlzz

1个评论

  1. - 2010年4月24日 4:16 下午

    楼主好文章,飘过。
    刚建的前端开发博客,有空交流一下吧。
    http://bokanstar.info
    期待更好的文章。

发表评论