马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
问题原因在创建统考试卷(it618_gtype=2)时,代码中没有给 it618_chkstate(审核状态)字段设置初始值,而数据库中该字段的默认值为 0。这导致新创建的统考试卷: 状态为 0(不在正常的 1-4 范围内) 后台“统考试卷管理”页面无法筛选到这些试卷 状态列无法正常显示
解决步骤步骤1:确认数据库表结构通过 phpMyAdmin 或 SQL 命令检查 pre_it618_exam_goods 表,确认 it618_chkstate 字段存在,且默认值为 0。 sql
DESC pre_it618_exam_goods;
步骤2:查看现有统考试卷状态分布发现没有任何 it618_gtype=2 的记录,说明过去创建的统考试卷也可能因为其他原因未被成功插入,或者尚未创建。 sql
SELECT it618_chkstate, COUNT(*) FROM pre_it618_exam_goods WHERE it618_gtype = 2 GROUP BY it618_chkstate;
结果为空,说明目前没有统考试卷。 步骤3:修改数据库字段默认值将 it618_chkstate 的默认值从 0 改为 1(对应“未申请”状态),这样即使代码未显式设置该字段,新插入的记录也会自动获得正确的初始状态。 sql
ALTER TABLE pre_it618_exam_goods MODIFY COLUMN it618_chkstate INT(10) UNSIGNED NOT NULL DEFAULT 1;
步骤4:修复创建试卷的 PHP 代码(可选但推荐)找到负责讲师后台创建试卷的文件(通常在 source/plugin/it618_exam/sc_product_add.inc.php),在插入数据数组中加入: php
'it618_chkstate' => 1,
如果找不到该文件或暂无修改权限,可暂时跳过,因为步骤3的数据库默认值已经可以保证新记录正确。 步骤5:备用方案——创建数据库触发器(如果无法修改PHP文件)创建一个 BEFORE INSERT 触发器,自动将 it618_gtype=2 且 it618_chkstate=0 的新记录的 it618_chkstate 修正为 1。 sql
DROP TRIGGER IF EXISTS trigger_exam_chkstate;DELIMITER //CREATE TRIGGER trigger_exam_chkstate BEFORE INSERT ON pre_it618_exam_goodsFOR EACH ROWBEGIN IF NEW.it618_gtype = 2 AND NEW.it618_chkstate = 0 THEN SET NEW.it618_chkstate = 1; END IF;END//DELIMITER ;
步骤6:测试验证在后台以讲师身份创建一份统考试卷,填写必要信息并提交。然后执行 SQL 查看结果: sql
SELECT id, it618_name, it618_gtype, it618_chkstate FROM pre_it618_exam_goods WHERE it618_gtype = 2;
若返回记录,且 it618_chkstate=1,则问题解决。 步骤7:清理旧数据(如有必要)如果之前有残留的异常统考试卷(it618_gtype=2 且 it618_chkstate=0),可手动修正: sql
UPDATE pre_it618_exam_goods SET it618_chkstate = 1 WHERE it618_gtype = 2 AND it618_chkstate = 0;
最终效果
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站内容为站长个人技术研究记录或网络,不提供用户交互功能,所有内容版权归原作者所有。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|