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