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、循环里面的判断正误:判断正确是要返回的,判断错误不能立即返回,如果错误要所有的全部判断出来再返回

二、内容在总结中

原文地址:https://www.cnblogs.com/Renyi-Fan/p/8990101.html