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


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

    一、总结

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

    禁止 空 默认值

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

    字段 null
    字段 值 = null

    [NOT] NULL :

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

    where('name', null);
    where('title','null');
    where('name','not null');
    

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

    where('title','=', 'null');
    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) )

    请问这个查询如何写出来

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

    当有变量参数的时候

    Db::name('test')
    ->where(function ($query) use ($user_id1, $user_id2){
    $query->where([
    'user_id1'=> $user_id1,
    'user_id2'=> $user_id2
    ]);
    })
    ->whereOr(function ($query) use ($user_id1, $user_id2){
    $query->where([
    'user_id1'=>$user_id2,
    'user_id2'=>$user_id1
    ]);
    })
    ->select();

    最后代码

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

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

    $teacher_gids=appadmin2model
    esource1Article::getGroups_id($user['u_class']);
    $teacher_gids='('.implode(',',$teacher_gids).')';
    $articles=db('article')->alias('a')->
    join('user u','u.u_id=a.a_authorid')->
    join('group g','u.u_ugid=g.gid','LEFT')->
    join('school_class sc','u.u_class=sc.sc_id','LEFT')->where($map1)->
    where('sc_id = :sc_id OR gid = :teacher_gids',['sc_id'=>$user['u_class'],'teacher_gids'=>17])->
    paginate(15);
    //$map1['gid']=['in',$teacher_gid];

    配合

    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,就是判断条件上

    join('school_class sc','u.u_class=sc.sc_id','LEFT')->where($map1)->
    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- 45%;" class="img-thumbnail">
    20         {/volist}
    21     </div>
    22 </div>
    23 {/if}
    24 
    25 
    26 <div class="form-group">
    27     <label for="eq_e_id">題目所屬的試卷</label>
    28     <div>
    29         <select data-am-selected="{btnSize: 'sm'}" class="fry_select" name="eq_e_id" disabled>
    30             <option {if condition="$vo.eq_e_id eq 0"} selected {/if} value="0">不屬於試卷</option>
    31             {volist name="exams" id="vo3"}
    32             <option {if condition="$vo['eq_e_id'] eq $vo3.e_id"} selected {/if} value="{$vo3.e_id}">{$vo3.e_title}-{$vo3.e_subtitle}</option>
    33             {/volist}
    34         </select>
    35     </div>
    36 </div>
    id="vo4"里面的vo4本来是vo所以会报错

    二、内容在总结中

     
  • 相关阅读:
    IPAD3终于发布了!苹果在5年内还是很难被超越!
    今天更新了ubuntu11.10!
    折腾两日系统重装,对比ubuntu11.04 和windows 7旗舰版!(不定时更新添加新的体验)
    DELL XPS M1530安装MAC OS X Lion 10.7.3经验分享!
    ubuntu 11.04 指纹识别的安装!
    Dlink DIR615L 和水星(mercury) MW300R桥接方法!
    POJ 3522 Slim Span(kruskal 变型)
    POJ 3621 Sightseeing Cows(SPFA + 构造负环)
    POJ 2553 The Bottom of a Graph(Tarjan)
    POJ 2728 Desert King(最优比率生成树)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10080892.html
Copyright © 2020-2023  润新知