m_Orchestrate learning system---三十二、数据库字段判断为空时容易出现问题,如何从根本上解决这个问题

一、总结

一句话总结:字段禁止为空,设置默认值0即可

禁止 空 默认值

1、thinkphp查询数据库时判断字段是否为null?

字段 null
字段 值 = null

[NOT] NULL :

查询字段是否(不)是Null,例如:

  1. where('name', null);
  2. where('title','null');
  3. where('name','not null');

如果你需要查询一个字段的值为字符串null或者not null,应该使用:

  1. where('title','=', 'null');
  2. where('name','=', 'not null');

2、数据库字段判断为空时容易出现问题,如何从根本上解决这个问题?

禁止 空 默认值

字段禁止为空,设置默认值0即可

3、学生分组分为所有(全部),未分组,对应分组,具体如何实现?

所有 -1
未分组 0

全部设置为-1,未分组的设置为0,php去数据的时候为-1则不加对应的条件判断

因为在之前的操作中很喜欢将所有设置为0而不是这里的-1

html

  1. <select class="form-control btn-sm" name="u_ugid" id="u_ugid" onchange="javascript:location.href=this.value;">
  2. <option value="{:url('institution.group/grouping',array('gid'=>-1))}" selected >All</option>
  3. <option value="{:url('institution.group/grouping',array('gid'=>0))}" {if condition="$gid eq 0"}selected{/if} >No Grouped</option>
  4. {volist name="groups" id="vo"}
  5. <option value="{:url('institution.group/grouping',array('gid'=>$vo.gid))}" {if condition="$vo.gid eq $gid"}selected{/if} >{$vo.gname}</option>
  6. {/volist}
  7. </select>

php

  1. public function grouping(){
  2. //將小組信息傳遞到頁面
  3. $groups=db('group')->select();
  4. $this->assign('groups',$groups);
  5.  
  6. $gid=input('gid');
  7. if(is_null($gid)) $gid=-1;
  8. $this->assign('gid',$gid);
  9. //dump($gid);die;
  10.  
  11. //將學生用戶傳遞到頁面
  12. $map=null;
  13. $map['u_status']=0;
  14. if($gid!=-1) $map['u_ugid']=$gid;
  15. $users=db('user')->alias('u')->
  16. join('group g','u.u_ugid=g.gid','LEFT')->where($map)->paginate(10);
  17. //dump($users);die;
  18. $this->assign('users',$users);
  19. return view();
  20. }

4、bootstrap栅格系统?

col-md

  1. <div class="row">
  2. <div class="col-md-2">
  3. <h3 class="box-title text-info" style="padding-top:8px;margin-bottom: 10px; ">資源列表</h3>
  4. </div>
  5. <div class="col-md-10">
  6. <select class="btn-sm" onchange="javascript:location.href=this.value;" style="margin-bottom: 10px;">
  7. <option {if condition="$a_jieduan_id lt 1"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>0))}">All</option>
  8. <option {if condition="$a_jieduan_id eq 1"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>1))}">WeEngage</option>
  9. <option {if condition="$a_jieduan_id eq 2"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>2))}">WeExplore</option>
  10. <option {if condition="$a_jieduan_id eq 3"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>3))}">WeAnalyze</option>
  11. <option {if condition="$a_jieduan_id eq 4"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>4))}">WeExplain</option>
  12. <option {if condition="$a_jieduan_id eq 5"} selected="" {/if} value="{:url('article/index',array('a_jieduan_id'=>5))}">WeReflect</option>
  13. </select>
  14. <select class="btn-sm" onchange="javascript:location.href=this.value;" style="margin-bottom: 10px;">
  15. <option value="">學校學下學校</option>
  16. <option value="">學校</option>
  17. <option value="">學校</option>
  18. </select>
  19. <select class="btn-sm" onchange="javascript:location.href=this.value;" style="margin-bottom: 10px;">
  20. <option value="">班級一</option>
  21. <option value="">班級</option>
  22. <option value="">班級</option>
  23. </select>
  24. <select class=" btn-sm" onchange="javascript:location.href=this.value;" style="margin-bottom: 10px;">
  25. <option value="">小組一</option>
  26. <option value="">小組</option>
  27. <option value="">小組</option>
  28. </select>
  29. <select class="btn-sm" onchange="javascript:location.href=this.value;" style="margin-right: 10px;margin-bottom: 10px;">
  30. <option value="">老師</option>
  31. <option value="">學生</option>
  32. </select>
  33. <a href="" class="btn btn-sm btn-danger">確定</a>
  34. </div>
  35. </div>

5、html布局的时候如何让前后两个产生间距,但是分成两行的时候还是从头起(就是不能是margin-left)?

margin-right

不能是margin-left,如果是margin-left,另起一行的时候就会和左边有间距

所以可以是前一个的margin-right

6、在老師-管理員端文章頁面文章页面显示时,实现管理员登录看到全部文章,老师登录只能看到本班的文章,本班的文章包括老师文章和学生文章,就是需要实现找出班级号是**或者小组号是**的文章?

评论 回复 where function use

多应该多看手册下面的评论和回复的,里面有

SELECT * FROM test WHERE cert_type = 2 AND ( cert_terminology LIKE 0 OR cert_licencing LIKE 0 OR member_id IN (1,2,3) )

请问这个查询如何写出来

  1. Db::name('test')
  2. ->where('cert_type',2)
  3. ->where(function ($query){
  4. $query->where('cert_terminology','like',0)
  5. ->whereOr('cert_licencing','like',0)
  6. ->whereOr('member_id','in',[1,2,3]);
  7. })
  8. ->select();

当有变量参数的时候

  1. Db::name('test')
  2. ->where(function ($query) use ($user_id1, $user_id2){
  3. $query->where([
  4. 'user_id1'=> $user_id1,
  5. 'user_id2'=> $user_id2
  6. ]);
  7. })
  8. ->whereOr(function ($query) use ($user_id1, $user_id2){
  9. $query->where([
  10. 'user_id1'=>$user_id2,
  11. 'user_id2'=>$user_id1
  12. ]);
  13. })
  14. ->select();

最后代码

  1. $articles=db('article')->alias('a')->
  2. join('user u','u.u_id=a.a_authorid')->
  3. join('group g','u.u_ugid=g.gid','LEFT')->
  4. join('school_class sc','u.u_class=sc.sc_id','LEFT')->where($map1)->
  5. where(function ($query) use($user,$teacher_gids){
  6. $query->where('sc_id','=',$user['u_class'])->whereOr('gid','in',$teacher_gids);
  7. })->
  8. paginate(15);

可以朝这个方向,thinkphp的in转sql的in还没解决

  1. $teacher_gids=\app\admin2\model\resource1\Article::getGroups_id($user['u_class']);
  2. $teacher_gids='('.implode(',',$teacher_gids).')';
  3. $articles=db('article')->alias('a')->
  4. join('user u','u.u_id=a.a_authorid')->
  5. join('group g','u.u_ugid=g.gid','LEFT')->
  6. join('school_class sc','u.u_class=sc.sc_id','LEFT')->where($map1)->
  7. where('sc_id = :sc_id OR gid = :teacher_gids',['sc_id'=>$user['u_class'],'teacher_gids'=>17])->
  8. paginate(15);
  9. //$map1['gid']=['in',$teacher_gid];

配合

  1. where('sc_id = :sc_id OR gid in :teacher_gids',['sc_id'=>$user['u_class'],'teacher_gids'=>$teacher_gids])

生成:

SELECT COUNT(*) AS tp_count FROM `mo_article` `a` INNER JOIN `mo_user` `u` ON `u`.`u_id`=`a`.`a_authorid` LEFT JOIN `mo_group` `g` ON `u`.`u_ugid`=`g`.`gid` LEFT JOIN `mo_school_class` `sc` ON `u`.`u_class`=`sc`.`sc_id` WHERE `u_status` = '0' AND ( sc_id = '13' OR gid in '(16,17,18)' ) LIMIT 1

正确的sqlin语句如下: 用法:select * from where field in (value1,value2,value3,…)

区别就是括号上面没有引号

7、thinkphp中的whereor是什么意思?

整体 or

是整体的or,不是局部的or,就是判断条件上

  1. join('school_class sc','u.u_class=sc.sc_id','LEFT')->where($map1)->
  2. where('sc_id','=',$user['u_class'])->whereor('gid','in',$teacher_gids)->

不管其它两个where是什么内容,whereor都会执行

8、ueditor动态改变宽度?

百度 文档 引擎
ueditor 网页 产物 调

百度上啥都有,傻傻找API和文档找不到的时候一定记得去搜索引擎上面找一找

ueditor是网页的产物,没有API我们照样可以像调网络元素那样调,一样的

  1. <!-- ueditor -->
  2. <script type="text/javascript">
  3. var $=jQuery;
  4. var ueditor_width=$('.myEditor').width();
  5. //$('.myEditor').css({'border':'5px ridge #ff00ff'});
  6. //alert(width);
  7. UE.getEditor('{$ueditorID}',{
  8. initialFrameWidth:ueditor_width,
  9. initialFrameHeight:200,
  10. });
  11.  
  12. //ueditor自動調節高度函數
  13. function ueditor_setWidth(){
  14. var ueditor_width=$('.myEditor').width();
  15. $('.myEditor #edui1').css('width',ueditor_width);
  16. }
  17.  
  18. //頁面尺寸改變編輯器的大小自動改變
  19. $(window).resize(function(){
  20. ueditor_setWidth();
  21. });
  22. </script>

9、响应式表格?

table-responsive

不是在table上面加,是在table外的div上面加

10、tp5出现Illegal string offset 'eq_e_id'?

百度 数组名 相同

问题解决不了,百度

是由于数组名取相同

在volist-vo循环里面又多了一个volist-vo循环,vo被重新复制,所以影响了后面的vo,所以会出现Illegal string offset 'eq_e_id'

  1. {if condition="strlen($vo['eq_stem_picture'])>0"}
  2. <div class="form-group">
  3. <label for="eq_stem_picture">
  4. 題目題幹圖片(可選多張)
  5. <small class="text-danger">最多20張,大小總和不超過500M</small>
  6. </label>
  7.  
  8. <div class="fry_file">
  9. <button type="button" class="btn btn-danger btn-sm" disabled>
  10. <i class="fa fa-upload"></i> Select images to upload</button>
  11. <input class="fry_file_input" id="eq_stem_picture" type="file" accept="image/*" name="eq_stem_picture[]" multiple disabled>
  12. </div>
  13. <div id="file-list">
  14. <?php
  15. $eq_stem_pictures = explode(",,",$vo['eq_stem_picture']);
  16. ?>
  17. {volist name="eq_stem_pictures" id="vo4"}
  18. <?php if(strlen($vo)<=0) continue;?>
  19. <img src="{$vo4}" alt="" style="max-width: 45%;" class="img-thumbnail">
  20. {/volist}
  21. </div>
  22. </div>
  23. {/if}
  24.  
  25. <div class="form-group">
  26. <label for="eq_e_id">題目所屬的試卷</label>
  27. <div>
  28. <select data-am-selected="{btnSize: 'sm'}" class="fry_select" name="eq_e_id" disabled>
  29. <option {if condition="$vo.eq_e_id eq 0"} selected {/if} value="0">不屬於試卷</option>
  30. {volist name="exams" id="vo3"}
  31. <option {if condition="$vo['eq_e_id'] eq $vo3.e_id"} selected {/if} value="{$vo3.e_id}">{$vo3.e_title}-{$vo3.e_subtitle}</option>
  32. {/volist}
  33. </select>
  34. </div>
  35. </div>
  1. id="vo4"里面的vo4本来是vo所以会报错

二、内容在总结中

 

m_Orchestrate learning system---三十二、数据库字段判断为空时容易出现问题,如何从根本上解决这个问题的更多相关文章

  1. 微信小程序把玩(三十二)Image API

    原文:微信小程序把玩(三十二)Image API 选择图片时可设置图片是否是原图,图片来源.这用的也挺常见的,比如个人中心中设置头像,可以与wx.upLoadFile()API使用 主要方法: wx. ...

  2. m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么

    m_Orchestrate learning system---十三.thinkphp的验证器支持多语言么 一.总结 一句话总结:支持,不仅验证器支持,其它的插件应该都支持 不仅thinkphp支持多 ...

  3. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  4. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  5. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  6. SQL注入之Sqli-labs系列第三十二关(基于宽字符逃逸注入)

    开始挑战第三十二关(Bypass addslashes) 0x1查看源代码 (1)代码关键点 很明显,代码中利用正则匹配将 [ /,'," ]这些三个符号都过滤掉了 function che ...

  7. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  8. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

  9. COJ968 WZJ的数据结构(负三十二)

    WZJ的数据结构(负三十二) 难度级别:D: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有 ...

随机推荐

  1. Lower Power with CPF(二)

    CPF文件可以有两种组织方式:Flat CPF file or Hierarchical CPF file. 由于在大型的SoC设计中,一般都采用Hierarchical的形式,所以本文主要按这个方式 ...

  2. js文本框字数限制

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. MySQL从删库到跑路_高级(五)——触发器

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.触发器简介 1.触发器简介 触发器是和表关联的特殊的存储过程,可以再插入,删除或修改表中的数据时触发执行,比数据 ...

  4. 论文笔记:语音情感识别(三)手工特征+CRNN

    一:Emotion Recognition from Human Speech Using Temporal Information and Deep Learning(2018 InterSpeec ...

  5. web测试项目总结

    一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直接输入特殊字符时,使 ...

  6. (七)git分支的操作

    1.git branch——显示分支一览表 2.git checkout -b——创建.切换分支 往feature-A中不断add.commit叫培育分支 git checkout - 切回上一个分支 ...

  7. linux查看内存free

    free 加参数-b/k//m/g,以b.k.m.g的大小显示结果,默认以k显示 [root@oldboy ~]# free total used free shared buffers cached ...

  8. jquery的click无法触发事件

    一个页面需要在加载后勾选table中所有行的checkbox,于是就这样写 $("table thead tr th input[type='checkbox']").click( ...

  9. Sizeof与Strlen的区别【转】

    本文转载自:http://www.cnblogs.com/carekee/articles/1630789.html Sizeof与Strlen的区别与联系 一.sizeof    sizeof(.. ...

  10. HDU1698 Just a Hook(线段树&区间覆盖)题解

    Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for m ...