没有有BUG的代码

else if('add' == $key){//获取问卷名字$id = $this->get('wjid');$wjname = $this->getWants('Spectab','id',$id,'specname');$this->assign('wjname',$wjname);}else if('edit' == $key){$id = $this->get('wjid');$wjname = $this->getWants('Spectab','id',$id,'specname');$id = $this->get('id');//查出题目信息$res_que = $model_que->getOne('id = ?',$id);//查出题目答案信息$res_ans = $model_ans->getAll('qid = ?',$id);$arr_index = array('wjname' => $wjname, 'res_que' => $res_que ,'res_ans' => $res_ans);$this->assign($arr_index);}else if('editdata' == $key){//修改$topicname = $this->post('topicname');$id = $this->post('id');$orderid = $this->post('orderid');$intype = $this->post('intype');$inclass = $this->post('inclass');//先更新allquestion 表$updateArray_que = array('topicname' =>$topicname,'orderid' => $orderid,'intype' => $intype,'inclass' => $inclass);$model_que->update($updateArray_que,'id = ?',$id);//判断是否答案项数量改变$count = $this->post('count');//查询出该题目下有几个答案$s_counts =  $model_ans->getAll('qid = ?',$id,'id');$s_count = count($s_counts);//获取record$record = $this->post('record');//拆分次字段来拼装post中的KEY 来取值 组装insert语句$record = substr($record,0,-1);//拆分$record_arr = explode('|',$record);/*print_r($s_counts);print_r($record_arr);*///处理counts 变成一维数组 当前选项$macth_arr = null;foreach($s_counts as $key => $val){$macth_arr[] = $val['id'];}$column_que_totle = count($column_que);//应该拿俩数组对比$diff = array_merge(array_diff($record_arr,$macth_arr),array_diff($macth_arr,$record_arr));//如果$diff为空 则只进行update 如果不为空 判断是单个的键值属于哪个数组 如果是match则要做删除  如果是record 则要insert 最后得出 增加和减少的数组 执行if(!empty($diff)){$arr_plus = null;$arr_reduce = null;foreach($diff as $key => $val){//判断属于哪个数组if(in_array($val,$macth_arr)){//如果是属于这个数组,则放在arr_reduce 反之则相反$arr_reduce[] = $val;}else{$arr_plus[] = $val;}}if(!empty($arr_reduce)){$delete_sql_str = implode(',',$arr_reduce);$sql = "delete from allscore where id in ($delete_sql_str)";$model_ans->execute($sql);}if(!empty($arr_plus)){$sql = 'insert into allscore (`qid`,`xuanxiang`,`xvalue`,`ztai`,`fengxian`,`jianyi`) values ';//得到需要新添加的俩项//拼装sql$arr_reduce_totle = count($arr_plus);foreach($arr_plus as $key => $value){//到了最后一项的时候if($key+1 == $arr_reduce_totle){$temp = "('".$id."',";foreach($column_que as $key => $val){if($column_que_totle - 1 == $key){$temp .= "'".$_POST[$val.$value]."'";}else{$temp .= "'".$_POST[$val.$value]."',";}}$sql .= $temp.")";}else{$temp = "('".$id."',";foreach($column_que as $key => $val){if($column_que_totle - 1 == $key){$temp .= "'".$_POST[$val.$value]."'";}else{$temp .= "'".$_POST[$val.$value]."',";}}$sql .= $temp."),";}}//bingo$model_ans->execute($sql);}}foreach($macth_arr as $key => $val){$updateSql = 'UPDATE allscore set';$tempStr = null;foreach($column_que as $key_1 => $val_1){if($column_que_totle == $key_1+1){$tempStr .= "$arr_update_ans[$key_1] ="."'".$_POST[$val_1.$val]."'";}else{$tempStr .= " $arr_update_ans[$key_1] ="."'".$_POST[$val_1.$val]."',";}}$updateSql .= $tempStr." where `id` = $val ";$model_ans->execute($updateSql);}echo 'yes';exit;}

有bug的代码

if('editdata' == $key){//修改$topicname = $this->post('topicname');$id = $this->post('id');$orderid = $this->post('orderid');$intype = $this->post('intype');$inclass = $this->post('inclass');//先更新allquestion 表$updateArray_que = array('topicname' =>$topicname,'orderid' => $orderid,'intype' => $intype,'inclass' => $inclass);$model_que->update($updateArray_que,'id = ?',$id);//判断是否答案项数量改变$count = $this->post('count');//查询出该题目下有几个答案$s_counts =  $model_ans->getAll('qid = ?',$id,'id');$s_count = count($s_counts);//获取record$record = $this->post('record');//拆分次字段来拼装post中的KEY 来取值 组装insert语句$record = substr($record,0,-1);//拆分$record_arr = explode('|',$record);/*print_r($s_counts);print_r($record_arr);*///处理counts 变成一维数组 当前选项$macth_arr = null;foreach($s_counts as $key => $val){$macth_arr[] = $val['id'];}

$arr_update_arr = null;$column_que_totle = count($column_que);//不应该是从数量上单纯判断if($count != $s_count){$arr_plus = null;if($count - $s_count > 0 ){$sql = 'insert into allscore (`qid`,`xuanxiang`,`xvalue`,`ztai`,`fengxian`,`jianyi`) values ';//说明增加了选项  要进行insert操作foreach($record_arr as $key => $val){if(!in_array($val,$macth_arr)){//当不在这个数据库的时候 说明需要新增 记录下ID$arr_plus[] = $val;}else{$arr_update_arr[] = $val;}}//得到需要新添加的俩项//拼装sql$arr_reduce_totle = count($arr_plus);foreach($arr_plus as $key => $value){//到了最后一项的时候if($key+1 == $arr_reduce_totle){$temp = "('".$id."',";foreach($column_que as $key => $val){if($column_que_totle - 1 == $key){$temp .= "'".$_POST[$val.$value]."'";}else{$temp .= "'".$_POST[$val.$value]."',";}}$sql .= $temp.")";}else{$temp = "('".$id."',";foreach($column_que as $key => $val){if($column_que_totle - 1 == $key){$temp .= "'".$_POST[$val.$value]."'";}else{$temp .= "'".$_POST[$val.$value]."',";}}$sql .= $temp."),";}}//bingo$model_ans->execute($sql);}else{//删除了选项 要进行delete操作$arr_reduce = null;foreach($macth_arr as $key => $val){if(!in_array($val,$record_arr)){//当不在这个数据库的时候 说明需要新增 记录下ID$arr_reduce[] = $val;}else{$arr_update_arr[] = $val;}}$delete_sql_str = implode(',',$arr_reduce);$sql = "delete from allscore where id in ($delete_sql_str)";$model_ans->execute($sql);}}//最后进行update操作 并且总是要进行这一步// 有可能没有变化 选项的个数if(empty($arr_update_arr)){$arr_update_arr = $macth_arr;}foreach($arr_update_arr as $key => $val){$updateSql = 'UPDATE allscore set';$tempStr = null;foreach($column_que as $key_1 => $val_1){if($column_que_totle == $key_1+1){$tempStr .= "$arr_update_ans[$key_1] ="."'".$_POST[$val_1.$val]."'";}else{$tempStr .= " $arr_update_ans[$key_1] ="."'".$_POST[$val_1.$val]."',";}}$updateSql .= $tempStr." where `id` = $val ";$model_ans->execute($updateSql);}echo 'yes';exit;}

转载于:https://www.cnblogs.com/bin-pureLife/p/3906825.html

做问答系统是对题目修改的bug相关推荐

  1. [CCF] 我做过的CCF题目汇总 Apare_xzc

    [CCF] 我做过的CCF题目汇总 by xzc 导言:   2019.12.15打了一场CCF,近期应该是不打算再参加了,做一个总结吧. 我今年9月份开学才知道CCF认证,当时我家LH敦促我要参加, ...

  2. C++利用二级指针做函数形参来进行修改实参的实例分析

    在学C/C++的时候,我们都会了解到一级指针,int* i = NULL;   和二级指针int ** pp = NULL; 但是具体的一些应用我们可能很难理解,如果我们要取int*的地址,我们就需要 ...

  3. 后端拼接html能做判断吗,怎么判断是前端bug还是后端bug?

    在提bug时,只有明确定位是前端bug还是后端bug,才能正确指派给对应的开发同学,如果经常分不清楚,一直需要开发同学重新指派,不仅浪费了时间,还会被开发同学吐槽,今天就带大家解锁一些区分前后端bug ...

  4. 这段时间做的简单dp题目(部分)

    这些时间vj上做的部分题目 HDU5115 题意:第一行t,t组测试数据,每组数据第一行输入n表示n匹狼,第二行给出一个序列表示每匹狼的伤害,第三行给出每匹狼能给周围狼的伤害增幅,求怎样打可以得到最小 ...

  5. 第二届BJD CTF做题总结与题目复现-MISCCrypto

    0x00 前言 上周参加了第二届BJD CTF,本Web dog太垃圾,就做出两道Web.不过还好MISC和Crypto做的还行.那就先总结复现一下.标*表示未作出的 0x01 MISC 这个做的还行 ...

  6. 当技术人成长为 CEO,应该修改哪些“Bug”?

    [CSDN 编者按]丛纹弨是智能交通和物流领域的连续创业者,二十年的产业技术和创业管理经验,让他成为行业资深专家.本文从智慧物流平台的真正价值为何.如何通过算法解决行业问题.技术人如何塑造产业思维,以 ...

  7. poi 1990 MooFest(树状数组题目,转换成两个树状数组来做)较难的题目****

    1.http://poj.org/problem?id=1990 2.题目大意: 题意:FJ有n头牛,排列成一条直线(不会在同一个点),给出每头牛在直线上的坐标x.另外,每头牛还有一个自己的声调w,如 ...

  8. 怎么把ppt文字大小设置一致_课件类PPT怎么做才好看?我修改了6页PPT,总结了7个技巧...

    嗨,各位木友们好呀,我是小木. 不好意思,上周少发了一篇文章,原因是时间全用来准备今天这篇近三千字.图还巨多的超长教程了- 在写这篇教程之前,我发过一条朋友圈,询问了大家在制作课件类PPT时有什么痛点 ...

  9. 做闲鱼两年了,bug不少

    闲鱼是一个巨大的流量池.至今,这个平台仍有很深的潜力.很大一部分人,对它的认知还停留在"回血"上面,知道能卖货赚钱的,还是少数. 其实每个人都有认知盲区,亿万富翁也不例外,毕竟我们 ...

最新文章

  1. 第四组视频:在bash脚本中使用脚本选项
  2. Python视频处理库:scikit-video
  3. Python基础(1)
  4. HDU1247 字典树 Hat’s Words(Tire Tree)
  5. c# 从一个大图里截取图形
  6. C#递归、动态规划计算斐波那契数列
  7. MFC之CAsyncSocket详解
  8. 使用 pqgrid 将JSON数据转换成TABLE
  9. 韦氏评级:担心比特币近期价格走势的人都过于关注短期
  10. python操作日期和时间的方法
  11. Wannafly模拟赛2: A. Contest(Cdq分治)
  12. [渝粤教育] 广东-国家-开放大学 21秋期末考试大学英语210262k2
  13. CentOs上docker安装nginx、tomcat、redis
  14. keil5写c语言的步骤,keil5使用C51的详细操作步骤
  15. 非负矩阵分解(NMF)
  16. 二八定律 VS 长尾效应
  17. 双曲正切matlab,如何在MatLab中用双曲正切拟合数据点?
  18. 阿里云短信服务(解决个人无法申请问题)
  19. 【今日学长】来自柚子帮学长--英国留学租房攻略!
  20. 企业招聘面试十大之怪现状

热门文章

  1. (超简单思路)U - C语言实验——单词统计
  2. 宝塔定时任务执行php源码任务_在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现...
  3. 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置
  4. 通信服务器系统安装,pxe网络安装操作系统
  5. mysql存储过程数组字符串_Mysql通过存储过程分割字符串为数组
  6. linux压缩内核镜像,zImage内核镜像解压过程详解
  7. mysql中关于group的语句指令_mysql不支持group by的解决方法小结
  8. android db加载后无法读取任何内容_android性能优化(二)之卡顿优化
  9. HDU-1874畅通工程续( 最短路)
  10. leedcode刷题——整数反转