• m_Orchestrate learning system---二十、如何写代码不容易犯错


    m_Orchestrate learning system---二十、如何写代码不容易犯错

    一、总结

    一句话总结:能排序多排序

    这次查错的启示:

    1、代码数据更规整:要是取出的数据排序的话可以减少很多查错时间

    2、多做练习:功积平时,用起来不容易出错,反而节约超多时间

    3、循环里面的判断正误:判断正确是要返回的,判断错误不能立即返回,如果错误要所有的全部判断出来再返回

    1、复选框如何传递多个值到后端?

    复选框参数传递用数组方式

    <input  type="checkbox" checked="" name="gttid[]" value="{$vo.id}"> {$vo.name}

    1、name="gttid[]" 这之中gttid[] 是纯粹的字符串,而不是和php原生代码相关的东西,不要看到[] 就觉得和代码相关,这里只是字符串

    2、value="{$vo.id}" 页面带{}的是标签,才是和php代码相关的东西

    2、html标签中需要套用php写逻辑怎么操作?

    php标签{php}可解决html中标签中嵌套原生php的问题

    <input  type="checkbox" {php} if(checkId($vo['id'])) echo 'checked="checked"'; {/php} checked="checked" name="gttid[]" value="$vo.id">{$vo.name}

    这样就非常棒棒了,就是标签可以实现的功能都可以用原生php来实现

    3、在html页面中调用原生php函数接收控制器assign来的数据(在函数中,所以变量要global啊)?

    <!-- 作者: 隐藏域 -->
    <input type="hidden" name="gtgid" value="{$dataout2.gid}">
    <!-- 作者: 隐藏域 -->
    
    <?php
        function checkId($id){
            global $dataGroupTopic; //1、在函数中,所以变量要global啊
            foreach($dataGroupTopic as $k => $val){
                if($val['gttid']==$id){
                    return true;
                }else{
                    return false;
                }
            }
        }
    ?>
    <div class="am-form-group">

    在函数中,所以变量要global啊

    4、view页面原生php中的函数访问不到控制器传过来的数据问题?

     1 <input type="hidden" name="gtgid" value="{$dataout2.gid}">
     2 <!-- 作者: 隐藏域 -->
     3 
     4 <?php
     5     $data22=$dataGroupTopic; //1、这里可以访问到控制器传过来的数据
     6     //dump($data22);die;
     7     function checkId($dataGroupTopic,$id){ //4、所以只有用传参数的方式了
     8         //dump($GLOBALS['data22']);die; //2、这里访问不到控制器传过来的数据
     9         //global $dataGroupTopic; //3、这里访问不到控制器传过来的数据
    10         //dump($dataGroupTopic);die;
    11         foreach($dataGroupTopic as $k => $val){
    12             if($val['gttid']==$id){
    13                 dump($id);die;
    14                 return true;
    15             }else{
    16                 return false;
    17             }
    18         }
    19     }
    20 ?>
    21 <div class="am-form-group">

    5、页面多选框显示数据只能显示一个的问题?

    正确的:

     错误的: 页面看到的是显示的最后一个,其实在数据库里面是显示的第一个

     面看到的是显示的最后一个,其实在数据库里面是显示的第一个

    因为添加去数据库的时候是从小往上添加的,所以最大的数据显示在最上面

    这样就误导我了

    所以要我是从数据库里面取数据的时候按照id排一下序,那么我就知道我是只显示第一个了

    然后就好找错误了

     1 <input type="hidden" name="gtgid" value="{$dataout2.gid}">
     2 <!-- 作者: 隐藏域 -->
     3 
     4 <?php
     5     function checkId($dataGroupTopic,$id){
     6         foreach($dataGroupTopic as $k => $val){
     7             if(intval($val['gttid'])==intval($id)){
     8                 return true;
     9             }else{ //1、错误是循环还没有比较完,就直接返回false了,去掉这句话就对了,所以要多练习,不然查错很不好查
    10                 return false;
    11             }
    12         }
    13     }
    14 ?>
    15 <div class="am-form-group">
    16     <label for="user-phone" class="am-u-sm-3 am-form-label">topic</label>
    17     <div class="am-u-sm-9 am-checkbox">
    18         <ul class="am-avg-sm-3 am-thumbnails">
    19 
    20             {volist name="dataout" id="vo"}
    21             <!-- 做复选框选择判定 -->
    22             <li>
    23                 <label class="am-checkbox-inline">
    24                 <?php 
    25                 /*
    26                     foreach($dataGroupTopic as $k => $val){
    27                         if($val['gttid']==$vo['id']){
    28                             //dump($val['gttid']);
    29                             echo '<input  type="checkbox" checked="checked" name="gttid[]" value="'.$vo['id'].'">';
    30                         }else{
    31                             echo '<input  type="checkbox"  name="gttid[]" value="'.$vo['id'].'">';
    32                         }
    33                     }
    34                     //dump($dataGroupTopic);
    35                 */   
    36                 ?>    
    37                 <input  type="checkbox" {php} if(checkId($dataGroupTopic,$vo['id'])) echo 'checked="checked"'; {/php}  name="gttid[]" value="{$vo.id}">{$vo.name}
    38                 </label>
    39             </li>
    40             {/volist}
    41         </ul>
    42     </div>
    43 </div>

    这次查错的启示:

    1、代码数据更规整:要是取出的数据排序的话可以减少很多查错时间

    2、多做练习:功积平时,用起来不容易出错,反而节约超多时间

    3、循环里面的判断正误:判断正确是要返回的,判断错误不能立即返回,如果错误要所有的全部判断出来再返回

    二、内容在总结中

  • 相关阅读:
    服务器时间同步
    CentOS7.1下生产环境Keepalived+Nginx配置
    Windows 客户端时间更新脚本NTP
    keepalived的配置详解(非常详细)
    Keepalived stable tarball
    keepalived配置主从备份
    ECharts使用心得总结
    C#项目获取当前时间的农历时间
    如何测试连接MsSQL数据库-------UDL文件
    为什么 管理工具里没有Internet(IIS)管理器选项
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8990101.html
Copyright © 2020-2023  润新知