{To Be A Coder}【一小白关于弄代码的那些事】

写在前面:
近期因为要考试,每天几百题的量,看得吐血,打印出来废纸张,不环保,整天拿着纸跑来跑去的有点二,于是乎萌发把题库放微信公众账号上来复习,这样利己,还能利人。怎样实现,这便是接下来要说的事。

有了想法,下一步是整理思路、制定方案、然后执行。

【思路】:
只要发送任意题目序号,就可以获得该题目内容及答案。

【方案】:
[1]、用户关注

[2]、引导用户开始查询

[3]、获取用户发送的数据

[3.1]、若数据不为空,则匹配数据库。

[3.1.1]、如存在该题号,则文本回复相关内容。

[3.1.2]、若不存在该题号,则进行提醒。

[3.2]、若数据为空,则无需匹配数据库,直接进行提醒。

[4]、结束。

有了方案,下一步需要分析存在的难点是什么,以及寻求解决的方法:
1、用户关注如何进行引导?
2、如何获取用户发送的数据?
3、如何匹配数据库?
4、如何以文本的形式进行回复?
5、数据库如何建议及数据如何导入?

因为从未学过系统的编程知识,变量、条件判断….什么的都不懂,只能找代码一个人慢慢琢磨,删删改改以便达到自己的要求。在此特别要谢谢@青龙老贼、@ZTalk技术群、w3cschool以及除度娘以外的搜索引擎。

之前@青龙老贼 有一个企业通讯录的教程,我的方案中所存在的问题都有涉及,所以就直接拿他的代码来学习。

【执行】:
1、首先用户关注如何进行引导:
判断消息类型为订阅事件,便引出欢迎语及操作提示。
代码示例:

 

2、获取用户发送的数据:
判断用户消息为文本类型,则匹配数据库,如存在则进行文本回复。
难点在于如何匹配数据库?如何以文本返回数据库的内容。
代码如下:

第65行代码:if($show_value=check_user($form_Content)),设定了变量$show_value、函数check_user(进行数据库匹配)、变量$form_Content(实际为用户发送的数据)。

3、匹配数据库:
函数check_user的主要作用就是匹配数据库,此代码根据@青龙老贼 的代码进行修改成自己的数据库内容。
函数check_user的代码如下:

其中“bigshow”为数据库表名,“show_id“为表内字段,即题库序号。

4、以文本消息的形式回复数据库内容给用户:
@青龙老贼的企业通讯录代码里是以图文的形式进行回复,我参考文本回复的内容设置变量$show_value以及$contentStr,$show_value里面就包含了数据库内相关内容,再赋值给$contentStr,最后回复$contentStr的内容给用户,完成文本消息回复。

代码在第65-73行,其中show_id、show_type、show、show_mood、show_answer均为数据库表“bigshow”内字段。

5、数据库的建立及数据导入:
使用的是SAE,参照之前企业通讯录的内容,建立了一个表及所需字段:

因考虑到题目内容较多,所以字段类型除“show_id”为int外,其余均设置成text。(不知是否正确)

数据导入的问题,因为源数据为excel,且不熟悉数据库,我就只能用了个比较笨的方法,将excel内的题目组合成数据库语句,然后执行导入。

最终得到SQL语句:

INSERT INTO `app_feng`.`bigshow` (`show_id`, `show_type`, `show`, `show_mood`, `show_answer`) VALUES (‘1 ‘, ‘单选题’, ‘n题目1 ‘, ‘n选项An选项Bn选项Cn选项D ‘, ‘n答案:B ‘);

最后执行导入。

虽然当初的想法已经实现,但最大的问题仍旧是数据库导入。几十几百的题目可以应付,但是上千的就有点费时间,希望有更好的解决办法。希望大家跟我交流下。
Coder势必要弄代码,但弄代码的未必是Coder,我便是后者。希望对像我一样的朋友有所帮助吧,再次谢谢@青龙老贼

 

2条评论

  1. feicien说道:

    关于数据导入,你可以用程序读取excel

发表评论

电子邮件地址不会被公开。 必填项已用*标注