做问答系统是对题目修改的bug

没有有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;
        }

做问答系统是对题目修改的bug

时间: 2024-11-09 00:57:52

做问答系统是对题目修改的bug的相关文章

补做课上实践题目

补做课上实践题目:嵌入式基础 题目 以课上的小时为例: 需要设置小时,首先需要将原来的小时清除,原来的小时有5位,故需要将前五位异或上零. newtime=oldtime&~(0x1F<<11); 还需要放置新的小时时间,将新的小时时间变为5位,然后放置到之前清空的五位上. newtime |= (hours & 0x1F) << 11; 获取小时时间时,直接取小时的五位然后输出即可. Hours=time>>11)&0x1F; return H

新 四则运算题目 修改

程序代码; #include <stdlib.h>#include <iostream.h>#include <conio.h>#include <time.h> using namespace std;void Display1(int,int,int);void Display2(int [],int,int,int);int main(){ int a = 0; int b = 0; int mode = 0;//0:加 1:减 2:乘 3:除 int

WPF做验证码,小部分修改原作者内容

原文地址:http://www.cnblogs.com/tianguook/p/4142346.html 首先感谢aparche大牛的帖子,因为过两天可能要做个登录的页面,因此,需要用到验证码,从而看到了大神的这篇帖子,十分感谢. 产生验证码的类ValidCode public class ValidCode { public enum CodeType { Words, Numbers, Characters, Alphas } private const double PI = 3.1415

hadoop做HA后,hbase修改

由于hadoop做了HA,namenode可能进行切换,hbase中的配置要做修改: hbase-site.xml中,rootdir改为和hadoop的dfs.nameservices一样, 并将hadoop的core-site.xml和hdfs-site.xml拷贝到hbase的conf下,然后重启hbase <name>hbase.rootdir</name> <value>hdfs://masters/hbase</value> 版权声明:本文为博主原

(被检讨)为何没在二十分钟内做完要求的题目

时间:2015.3.6 地点:基础教学楼601 要求:在二十分钟内编写一段代码满足能随机抽取几组四则运算题目 因为没在规定时间完成特写此检讨,望广大园友共勉! 正确代码如下: #include<iostream>using namespace std;int main(){ int a,b,c,d,k; for(k=0;k<10;k++) {  a=rand()%99;  b=rand()%99;  c=rand()%5;  if(c==1) cout<<a<<&

为extjs的TabPanel 添加右键关闭效果(修改一个bug)

效果图如下: 因为我用的是extjs-4.2.1.883 这个版本,右键菜单的相关源代码需要在发布包下的源代码(examples\ux)下去查找(Ext.ux.BoxReorderer,Ext.ux.TabCloseMenu,Ext.ux.TabReorderer,Ext.ux.TabScrollerMenu) 在首页面配置路径: Ext.Loader.setConfig({     enabled: true,     paths: {         'Ext.app': '../../ex

信奥一本通-树状数组模版题目-修改数列元素+求子数列元素和

给定n个数列,规定有两种操作,一是修改某个元素,二是求子数列[a,b]的连续和.数列的元素个数最多10万个,询问操作最多10万次. 输入 第一行2个整数n,m(n表示输入n个数,m表示有m个操作) 第二行输入n个数列. 接下来m行,每行有三个数k,a,b(k=0表示求子数列[a,b]的和:k=1表示第a个数加b). 输出 输出若干行数字,表示k=0时,对应的子数列[a,b]的连续和. 样例输入 10 5 1 2 3 4 5 6 7 8 9 10 1 1 5 0 1 3 0 4 8 1 7 5 0

用DateTime类做判断闰年的题目

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 闰年练习 { class Program { static void Main(string[] args) { //1.输入年月日,看输入的日期是否正确 //2.输出是今年是否是闰年(29天),输出日期 // 闰年的判断普通年能被4整除且不能被1

angularjs ios title不能修改的bug的解决方法

在app.js加入下面这句代码 就可以解决. function ($rootScope, $state, $stateParams, $log, httpService, apiUrl, cookieUtil, $location) { var $body = $('body'); document.title = toState.data.pageTitle; var $iframe = $('<iframe src="/favicon.ico"></iframe&