精华内容
下载资源
问答
  • Oracle参数分类参数的查看方法

    千次阅读 2019-03-11 10:04:06
    原 Oracle 参数分类参数的查看方法https://blog.csdn.net/tianlesoftware/article/details/5583655版权声明: https://blog.csdn.net/tianlesoftware/article/details/5583655 Oracle数据库系统根据初始化参数...

    原 Oracle 参数分类 和 参数的查看方法https://blog.csdn.net/tianlesoftware/article/details/5583655版权声明: https://blog.csdn.net/tianlesoftware/article/details/5583655
    Oracle数据库系统根据初始化参数文件init.ora中设置的参数来配置自身的启动,每个实例在启动之前,首先读取这些参数文件中设置的不同参数。
    Oracle系统中的参数,根据系统使用情况可以简单分为两大类:
    普通参数:也就是Oracle系统正常使用的一些参数,
    非凡参数:包括三种,过时参数、强调参数和隐藏参数。
    随着Oracle数据库新版本的发布,相应每次都会增加或者删除一些参数。下面具体介绍如何查询当前系统版本中的各种参数情况。
       一、过时参数 和 强调参数
    Oracle 数据库中,系统提供了几个视图可以查看系统参数的情况。视图 V$OBSOLETE_PARAMETER 中含有所有的过时 (obsolete) 和强调 (underscored) 参数。
    这里首先说明一下什么是 Oracle 的过时 (obsolote) 和强调 (underscored) 参数,过时参数,顾名思义就是在 Oracle 以前的版本中存在,但在新版本中已经淘汰了的参数,已经不再使用;而强调参数,是指那些在新版本中保留了下来,但是除非非凡需要不希望用户使用的那些参数。在视图 V$OBSOLETE_PARAMETER 中,包含这些参数的名称和一个标志字 ISSPECIFIED ,该标志字用来指出这个参数是否在 init.ora 文件中已实际设置。 下面的 SQL 脚本列出了当前系统中所有的过时参数名称以及它们是否在当前系统中设定。 
    /* Formatted on 2010-5-12 17:46:27 (QP5 v5.115.810.9015) */
    SELECT   name, isspecified FROM v$obsolete_parameter;
    上面谈到, Oracle 系统并没有将 V$OBSOLETE_PARAMETER 视图中的所有参数均丢弃,而是将其中的一部分转换为强调参数,下面就来讨论如何查看这些参数是已被丢弃还是被转换。这可以通过系统视图 X$KSPPO 来查看,该视图中包含一个名为 KSPPOFLAG 的字段,用来指明该参数在当前版本中是被丢弃还是被强调,假如该值为 1 ,则表示该参数已被丢弃,该值为 2 ,则表明该参数现为强调参数。
    /* Formatted on 2010-5-12 17:46:06 (QP5 v5.115.810.9015) */
      SELECT   kspponm, DECODE (ksppoflg,
                                1,
                                'Obsolete',
                                2,
                                'Underscored')
        FROM   x$ksppo
    ORDER BY   kspponm;
    注:该视图只在 sys 用户下可以看到。 
      二、隐藏参数
    Oracle 系统中还有一类参数称之为隐藏参数 (hidden parameters) ,是系统中使用,但 Oracle 官方没有公布的参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符. 下面的查询可以得到当前系统中的所有隐藏参数,需要以sys用户登陆,查看两个视图:x$ksppi, x$ksppcv. 
    /* Formatted on 2010-5-12 17:45:46 (QP5 v5.115.810.9015) */
    SELECT   ksppinm, ksppstvl, ksppdesc
      FROM   x$ksppi x, x$ksppcv y
     WHERE   x.indx = y.indx AND TRANSLATE (ksppinm, '_', '#') LIKE '#%';
    或者用:
    /* Formatted on 2010-5-12 17:07:26 (QP5 v5.115.810.9015) */
      SELECT   i.ksppinm name,
               i.ksppdesc description,
               CV.ksppstvl VALUE,
               CV.ksppstdf isdefault,
               DECODE (BITAND (CV.ksppstvf, 7),
                       1, 'MODIFIED',
                       4, 'SYSTEM_MOD',
                       'FALSE')
                  ismodified,
               DECODE (BITAND (CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
        FROM   sys.x$ksppi i, sys.x$ksppcv CV
       WHERE       i.inst_id = USERENV ('Instance')
               AND CV.inst_id = USERENV ('Instance')
               AND i.indx = CV.indx
               AND i.ksppinm LIKE '/_%' ESCAPE '/'
    ORDER BY   REPLACE (i.ksppinm, '_', '');
      三、系统当前参数
    下面的脚本以英文字母顺序列出了系统当前使用的所有参数。在列出的参数中,假如参数名称前面有 # 这个符号,则表示该参数没有明确指定,采用了系统中的默认参数。
    /* Formatted on 2010-5-12 17:44:11 (QP5 v5.115.810.9015) */
      SELECT   DECODE (isdefault, 'TRUE', '# '),
               DECODE (isdefault, 'TRUE', RPAD (name, 43), RPAD (name, 45)),
               VALUE
        FROM   v$parameter
    ORDER BY   name;
    注意:上面的 SQL 脚本没有列出系统中的隐藏参数。
    以上内容整理自网络https://img-blog.csdnimg.cn/20190217105710569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwNzgxNDE=,size_16,color_FFFFFF,t_70《算法导论 第三版英文版》_高清中文版.pdf
    https://pan.baidu.com/s/17D1kXU6dLdU0YwHM2cvNMw
    《深度学习入门:基于Python的理论与实现》_高清中文版.pdf
    https://pan.baidu.com/s/1IeVs35f3gX5r6eAdiRQw4A
    《深入浅出数据分析》_高清中文版.pdf
    https://pan.baidu.com/s/1GV-QNbtmjZqumDkk8s7z5w
    《Python编程:从入门到实践》_高清中文版.pdf
    https://pan.baidu.com/s/1GUNSg4mdpeOf1LC_MjXunQ
    《Python科学计算》_高清中文版.pdf
    https://pan.baidu.com/s/1-hDKhK-7rDDFll_UFpKmpw

    展开全文
  • 该案例是实际开发中运用,java递归查询分类及分类下所有子分类。代码走起:1.jsp页面布局样式这里不再介绍,js业务逻辑展示分类树形结构如下:/** * 商品分类操作 */ /** * 初始化 */ $(function(){ //加载树 ...

    该案例是实际开发中运用,java递归查询分类及分类下所有子分类。

    代码走起:

    1.jsp页面布局样式这里不再介绍,js业务逻辑展示分类树形结构如下:

    /**
     * 商品分类操作
     */
    
    /**
     * 初始化
     */
    $(function(){
    	//加载树
    	reloadTree();
    	
    	
        });
    	
    });
    
    /**
     * 加载树
     */
    function reloadTree(){
    	//加载列表树
    	initGoodsCateTree(1);
    	//加载添加分类弹框树
    	initGoodsCateTree(2);
    	//加载编辑分类弹框树
    	initGoodsCateTree(3);
    }
    
      
    /**
     * 初始化商品分类树
     * type:1列表树2弹框树
     */
    function initGoodsCateTree(type){
    	$.ajax({
    		type:"post",  
    		url: "queryAllCate.htm",
    		async:false, //同步
    		cache:false, //清除缓存
    		dataType:"json",
    		success: function(data){
    			if(type==1){
    				//加载列表树
    				$("#cat_tree").html("");
    			}else if(type==2){
    				//加载添加分类弹框树
    				$("#parentCate_add .tree").html("");
    			}else if(type==3){
    				//加载编辑分类弹框树
    				$("#parentCate_edit .tree").html("");
    			}
    			loadGoodsCateTree(data,0,type);
    			//加载分类树样式
    			initGoodsCateTreeCss();
    		}
       });
    }
    
    /**
     * 递归树
     * datas:商品分类数据
     * parendId:父节点默认为0
     * type:1列表树2弹框树
     */
    function loadGoodsCateTree (datas,parentId,type){
    	if(datas!=null){
    		if(parentId==0){
    			for(var i=0;i<datas.length;i++){
    				var data=datas[i];
    				if(type==1){
    					//拼接列表树
    					$("#cat_tree").append(goodsCateHtml(data));
    				}else if(type==2){
    					//拼接添加分类弹框树
    					$("#parentCate_add .tree").append(selectGoodsCateHtml(data,"cateAdd"));
    				}else if(type==3){
    					//拼接编辑分类弹框树
    					$("#parentCate_edit .tree").append(selectGoodsCateHtml(data,"cateEdit"));
    				}
    				//递归所有子节点
    				for(var j=0;j<data.cateVos.length;j++){
    					var dataCate=data.cateVos[j];
    					loadGoodsCateTree(dataCate,dataCate.catId,type);
    				}
    			}
    		}else{//非父节点
    			var data=datas;
    			if(type==1){
    				//拼接列表树
    				$("#cat_tree").append(goodsCateHtml(data));
    			}else if(type==2){
    				//拼接添加分类弹框树
    				$("#parentCate_add .tree").append(selectGoodsCateHtml(data,"cateAdd"));
    			}else if(type==3){
    				//拼接编辑分类弹框树
    				$("#parentCate_edit .tree").append(selectGoodsCateHtml(data,"cateEdit"));
    			}
    			//递归所有子节点
    			for(var j=0;j<data.cateVos.length;j++){
    				var dataCate=data.cateVos[j];
    				loadGoodsCateTree(dataCate,dataCate.catId,type);
    			}
    		}
    	}
    }
    
    /**
     * 拼接商品分类列表树
     * data:商品分类数据
     */
    var goodsCateHtml=function (data) {
    	var html="";
    	//默认只展示父节点
    	if(data.catGrade==1){
    		html= '<div depath="'+data.catGrade+'" class="clear_cat row"  cid="'+data.catId+'"  pid="'+data.catParentId+'" >'
    	}else{
    		html= '<div depath="'+data.catGrade+'" class="clear_cat row"  style="display:none;" cid="'+data.catId+'"  pid="'+data.catParentId+'" >'
    	}
    	html= html+
    	'<table>'+
    		'<tbody>'+
    			'<tr>'+
    				'<td class="td1">'+
    					'<div >'+
    						'<span class="handle-icon">'+
    							'<img src="images/cticon2.png" alt="收起子分类" title="收起子分类" class="handle-hide" app="desktop" style="display: none;">'+
    							'<img src="images/cticon1.png" alt="展开子分类" title="展开子分类" class="handle-show" app="desktop">'+
    						'</span>'+
    						 '<a >'+data.catName+'</a>'+
    					'</div>'+
    				'</td>'+
    				'<td class="td2"><span class="quiet">['+data.typeName+']</span></td>'+
    				'<td class="td3"><b>'+data.catSort+'</b></td>'+
    				'<td class="td4">'+
    					'<a href="javascript:void(0);" class="addSubNote" οnclick="addSubCate('+data.catId+','+data.catGrade+',\''+data.catName+'\')">增加子类</a>'+ 
    					'<a href="javascript:void(0);" οnclick="editGoodsCate('+data.catId+')">编辑</a>'+ 
    					'<a href="javascript:void(0);" οnclick="deleteGoodsCate('+data.catId+')">删除</a>'+
    				'</td>'+
    				'<td class="td5">'+
    	              '<input type="hidden" value="'+data.catIsFinal+'"/>'+
    	            '</td>'+
    			'</tr>'+
    		'</tbody>'+
    	'</table>'+
      '</div>';
    	return html;
    }
    
    /**
     * 加载商品分类树样式
     */
    function initGoodsCateTreeCss(){
    	$(".clear_cat").each(function(){
    		//判断是否是末级
    		var isM = $(this).find(".td5 input").val();
    		if(isM == 1){
    			//末级节点不展示图标
    			$(this).find(".handle-icon").remove();
    			//不显示添加子类
    			$(this).find(".addSubNote").remove();
    		}else {
    			//非末级节点不显示类型名称
    			$(this).find(".quiet").html(" ");
    		}
    		//子节点添加样式
    		var depath = $(this).attr("depath");
    		$(this).find(" .td1>div").css("padding-left",20*depath+"px");
    	});
    }
    
    /**
     * 拼接商品分类弹框树
     * data:商品分类数据
     */
    var selectGoodsCateHtml=function (data,divId){
    	var html="";
    	//默认只展示父节点
    	if(data.catGrade==1){
    		html= '<div depath="'+data.catGrade+'" class="clear_cat row"  cid="'+data.catId+'"  pid="'+data.catParentId+'" >'
    	}else{
    		html= '<div depath="'+data.catGrade+'" class="clear_cat row"  style="display:none;" cid="'+data.catId+'"  pid="'+data.catParentId+'" >'
    	}
    	html= html+
    	'<table>'+
    		'<tbody>'+
    			'<tr>'+
    				'<td class="td1">'+
    					'<div >'+
    						'<span class="handle-icon">'+
    							'<img src="images/cticon2.png" alt="收起子分类" title="收起子分类" class="handle-hide" app="desktop" style="display: none;">'+
    							'<img src="images/cticon1.png" alt="展开子分类" title="展开子分类" class="handle-show" app="desktop">'+
    						'</span>'+
    						 '<a href="javascript:void(0);" οnclick="selectParentCate('+data.catId+','+data.catGrade+',\''+data.catName+'\',\''+divId+'\')" >'+data.catName+'</a>'+
    					'</div>'+
    				'</td>'+
    				'<td class="td5">'+
    	              '<input type="hidden" value="'+data.catIsFinal+'"/>'+
    	            '</td>'+
    			'</tr>'+
    		'</tbody>'+
    	'</table>'+
      '</div>';
    	return html;
    }
    
    /**
     * 点击上级分类显示弹框树
     */
    function showParentCate(){
    	if($(".cateTree").css("display")=="none"){
    		$(".cateTree").show();
    	}else{
    		$(".cateTree").hide();
    	}
    }
    
    /**
     *点击上级分类显示弹框树,选择任意一个上级分类名称赋值至文件框
     * parentId:父节点id
     * parentGrade:父节点层级
     * parentName:父节点名称
     * divId:div标识判断是添加分类弹窗还是编辑分类弹窗
     */
    function selectParentCate(parentId,parentGrade,parentName,divId){
    	//alert("parentId:"+parentId);alert("parentGrade:"+parentGrade);alert("parentName:"+parentName);alert("divId:"+divId);
    	if(divId=="cateAdd"){
    		$("#catParentName_add").val(parentName);
    		$("#catParentId_add").val(parentId);
    		$("#catGrade_add").val(parentGrade);
    	}else if(divId=="cateEdit"){
    		$("#catParentName_edit").val(parentName);
    		$("#catParentId_edit").val(parentId);
    		$("#catGrade_edit").val(parentGrade);
    	}
    	//隐藏弹框树
    	$(".cateTree").hide();
    }
    
    	
    
    备注:

    1.注意用了代码重构的思想,如添加分类,编辑分类都要显示谈框树,则用type来区分是添加显示还是编辑显示

    2.js执行顺序是从上到下,代码顺序很重要,在实际开发中因为代码放的位置不对,导致展示数据异常,这里就明显体现了。

    3.从后台递归查询了数据,前台没有用任何框架,纯js+css展示,这里用js递归方法展示,本人是第一次写,觉得非常好,留着纪念吐舌头

    后台代码:

    controlle层:

    /**
         * 递归查询商品分类
         * @return
         */
        @RequestMapping("/queryAllCate")
        @ResponseBody
        public List<GoodsCateVo> queryGoodsCateVo(HttpServletRequest request)  {
        	//获取参数(all查询所有)
        	String queryType = request.getParameter("queryType");
        	Date date=new Date();
        	List<GoodsCateVo> list=new ArrayList<GoodsCateVo>();
        	HashMap<String, Object> paramMap=new HashMap<String, Object>();
            try {
            	//根据父节点递归查询子节点
            	if(!"all".equals(queryType)){
            		paramMap.put("catParentId", 0);
            	}
            	list=goodsCateService.findAllGoodsCate(paramMap);
            	System.out.println("查询耗时:"+(new Date().getTime()-date.getTime()));
    		} catch (Exception e) {
    			e.printStackTrace();
    			LOGGER.error("递归查询商品分类失败"+e.getMessage(),e);
    		}
            return list;
        }
    注意这里查询是所有父分类即catParentId=0,然后根据父分类递归查询所有子分类

    serverImpl业务层:

     /**
         * @descript:根据父节点递归查询子节点
        * @param:
        * @return:
         */
        @Transactional(readOnly=true)
        public List<GoodsCateVo> findAllGoodsCate(Map<String, Object> paramMap){
        	//封装返回结果
        	List<GoodsCateVo> list=new ArrayList<GoodsCateVo>();
        	try {
        		//查询所有父商品分类
        		List<GoodsCateVo> goodsParentCateList=goodsCateMapper.queryAllParentGoosCate(paramMap);
        		if(goodsParentCateList!=null && !goodsParentCateList.isEmpty()){
        			for(GoodsCateVo cateVo:goodsParentCateList){
        				// 初始化变量申明
        				GoodsCateVo vo=new GoodsCateVo();
        				vo.setCatId(cateVo.getCatId());
        				vo.setCatName(cateVo.getCatName());
        				vo.setCatParentId(cateVo.getCatParentId());
        				vo.setCatGrade(cateVo.getCatGrade());
        				vo.setCatSort(cateVo.getCatSort());
        				vo.setCatRate(cateVo.getCatRate());
        				vo.setCatIsFinal(cateVo.getCatIsFinal());
        				vo.setTypeId(cateVo.getTypeId());
        				vo.setTypeName(cateVo.getTypeName());
        				//子分类参数
        				 Map<String, Object> dataMap=new HashMap<String, Object>();
        				 dataMap.put("catParentId", cateVo.getCatId());
        				 //通过父分类递归子分类,最后一级不递归,商品分类是否是末级0否1是
        				 if("0".equals(cateVo.getCatIsFinal())){
        					 vo.setCateVos(findAllGoodsCate(dataMap));
        				 }
        				 list.add(vo);
        			}
        		}
    		} catch (Exception e) {
    			e.printStackTrace();
    			LOGGER.error("查询商品分类失败"+e.getMessage(),e);
    		}
        	return list;
        }
    mybatis查询:
     <!-- 根据父节点递归查询子节点 -->
    	 <select id="queryAllParentGoosCate" parameterType="java.util.Map"  resultMap="goodsCateVo">
    		  	select 
    		  		<include refid="goodsCateVo_Colimn_list" />
    		  	from t_goods_category  c 
    		  	left join t_goods_type   t  on c.type_id=t.type_id  and  t.type_delflag='0'
    		  	where	
    		  	c.cat_delflag='0'  
    		 	<if test="catParentId != null" >
    	       		and  c.cat_parent_id=#{catParentId}
    	      	</if>
    		  	
    		  	order by  c.cat_sort,c.cat_id
    	 </select>
    实体类:
    package com.qianjiang.goods.vo;
    
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 商品分类VO
     */
    public class GoodsCateVo implements Serializable{
        /**
    	 * 序列化
    	 */
    	private static final long serialVersionUID = -1362577335137261590L;
    	/*
        *分类ID
         */
        private Long catId;
        /*
        *分类名称
         */
        private String catName;
        /*
        *父级分类ID
         */
        private Long catParentId;
        /*
        *商品类型ID
         */
        private Long typeId;
    
        /*
        *类型排序
         */
        private Integer catSort;
        /*
        *层级
         */
        private Integer catGrade;
        /*
        *类型名称
         */
        private String typeName;
    
        /*
        *子级的CateVo集合,默认为空(这样定义是因为在js递归子分类出现异常故这样定义给个默认值)
         */
        private List<GoodsCateVo> cateVos=new ArrayList<GoodsCateVo>(0);
        /*
        *类目扣率
         */
        private BigDecimal catRate;
        /*
         *商品分类是否是末级0否1是
          */
        private String catIsFinal;
    
        public BigDecimal getCatRate() {
            return catRate;
        }
    
        public void setCatRate(BigDecimal catRate) {
            this.catRate = catRate;
        }
    
        public Long getCatId() {
            return catId;
        }
    
        public void setCatId(Long catId) {
            this.catId = catId;
        }
    
        public String getCatName() {
            return catName;
        }
    
        public void setCatName(String catName) {
            this.catName = catName;
        }
    
        public Long getCatParentId() {
            return catParentId;
        }
    
        public void setCatParentId(Long catParentId) {
            this.catParentId = catParentId;
        }
    
        public Long getTypeId() {
            return typeId;
        }
    
        public void setTypeId(Long typeId) {
            this.typeId = typeId;
        }
    
        public Integer getCatSort() {
            return catSort;
        }
    
        public void setCatSort(Integer catSort) {
            this.catSort = catSort;
        }
    
        public Integer getCatGrade() {
            return catGrade;
        }
    
        public void setCatGrade(Integer catGrade) {
            this.catGrade = catGrade;
        }
    
        public String getTypeName() {
            return typeName;
        }
    
        public void setTypeName(String typeName) {
            this.typeName = typeName;
        }
    
    	public List<GoodsCateVo> getCateVos() {
    		return cateVos;
    	}
    
    	public void setCateVos(List<GoodsCateVo> cateVos) {
    		this.cateVos = cateVos;
    	}
    
    	public String getCatIsFinal() {
    		return catIsFinal;
    	}
    
    	public void setCatIsFinal(String catIsFinal) {
    		this.catIsFinal = catIsFinal;
    	}
        
        
    }

    补充:

    这里用到一个方法:Select下拉框onchange事件获取option的value值

    jsp:

    <div class="form-group">
    	<label class="col-sm-5 control-label"> <span class="text-danger">*</span>是否末级:</label>
    	<div class="col-sm-14">
    		<select class="form-control w100 required" data-live-search="false" name="catIsFinal"  οnchange="changeSelect(this.options[this.options.selectedIndex].value,'cateRate_add');">
    			<option value="">请选择</option>
    			<option value="0">否</option>
    			<option value="1" >是</option>
    			</select>
    	</div>
    	<div class="col-sm-4"></div>
    </div>
    js方法:
    /**
     * select change事件
     * 判断是否末级,若是显示分类扣率否则不显示
     * catIsFinal 0否1是
     * @param obj select选中的值
     * @param divId 分类扣率divId
     */
    function changeSelect(obj,divId){
    	//alert("select value:"+obj); alert("divId:"+divId);
    	var catIsFinal=obj;
    	if(catIsFinal=="1"){
    		//添加验证
    		$("#"+divId).find("select").addClass("required");
    		$("#"+divId).find("input").addClass("required");
    		//显示分类扣率
    		$("#"+divId).show();
    	}else{
    		//移除验证
    		$("#"+divId).find("select").removeClass("required");
    		$("#"+divId).find("input").removeClass("required");
    		//隐藏分类扣率
    		$("#"+divId).hide();
    	}
    }
    案例中放开alert,obj就是下拉框选中的值





    展开全文
  • 一、完整例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8">...meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">...title>...

    一、完整例子

    <!DOCTYPE html>
    <html>				
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
      <title>课程(科目)管理-报名表-应用中心</title>
    	<link rel="stylesheet" href="__STATIC__/layui/css/layui.css" media="all">
    	<script src="__STATIC__/layui/layui.js"></script>
    	<!--<script type="text/javascript" src="__STATIC__/jquery/1.8.3/jquery.min.js"></script>-->
    	<style>
    		.border_user{border: 1px solid #e2e2e2;padding: 20px 10px 20px 10px;box-sizing: border-box;background: #f2f2f2;border-radius: 5px;}
    		.border_user p{margin-top: 5px;color: #999;overflow: hidden;text-overflow: ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
    		.layui-col-space15{margin: ;} 
    		.class0{width: 49%; padding-right: 1%;}
    		.class1{width: 49%; padding-right: 1%;}
    		.class2{width: 49%; padding-right: 1%;}
    		.class3{width: 49%; padding-right: 1%;}
    		.border_left{position: relative; color: #1E9FFF;font-weight: bold;}
    		.border_left:after{
    			display: block;content: '';position: absolute;top: 50%;margin-top: -7px;height: 14px;width: 3px;background: #1E9FFF;color: red;left: 8px;
    		}
    	</style>
    </head>
    
    <body style="background-color: #FFFFFF;">
    <div style="background-color: #F2F2F2;" >
    	  <div class="layui-row layui-col-space10" style="margin: 0;">
    	  	
    	    <div class="layui-col-md12">
    	      <div class="layui-card">
    	        <div class="layui-card-body">
    								<span class="layui-breadcrumb">
    									<a><cite>首页</cite></a>
    								  <a href="{:url('index')}">应用中心</a>
    								  <a href="{:url('index')}">{$rs['title']}</a>
    								  <a><cite>{$rsp['title']}</cite></a>
    								  <a><cite>{$rsc['title']}</cite></a>
    								</span>
    	        </div>
    	      </div>
    	    </div>
    {empty name="id"}
    	    <div class="layui-col-md2">
    	      <div class="layui-card">
    	        <div class="layui-card-header"><h3><i class="layui-icon layui-icon-app" style="font-size: 16px; "></i> {$rs['title']}</h3></div>
    	        <div class="layui-card-body">
    									<ul class="layui-timeline">
    										{volist name="res" id="v"}
    									  <li class="layui-timeline-item" style="padding-bottom: 10px !important;">
    									    <i class="layui-icon layui-timeline-axis" style="color: #{if $cid==$v['id']}FF5722{else /}c2c2c2{/if};">&#xe623;</i>
    									    <div class="layui-timeline-content layui-text">
    									      <h4 class="layui-timeline-title" {if $cid==$v['id']}style="color: #FF5722; "{/if}><strong>{$v['title']}</strong></h4>
    {if condition="$v['child'] neq ''"}
    {volist name="v.child" id="v2"}
    									      <p><i style="color: #{if $ccid==$v2['id']}FF5722{else /}01AAED{/if};" class="fa fa-{notempty name="$v2['icon']"}{$v2['icon']}{else /}square-o{/notempty}"></i> <a href="{:url($v2['url'],['tid'=>$tid,'cid'=>$v['id'],'ccid'=>$v2['id']])}" {if $ccid==$v2['id']}style="color: #FF5722; "{/if}>{$v2['title']}</a></p>
    {/volist}
    {/if}
    									    </div>
    									  </li>
    									  {/volist}
    									</ul>
    	        	  		<!--<button class="layui-btn layui-btn-fluid layui-btn-normal startSelect" style="padding-bottom: 10px;">初始化下拉框数据</button>-->
    	        </div>
    
    	      </div>
    	    </div>
    {/empty} 
    {empty name="id"}  
    	    <div class="layui-col-md10">
    {else /}
    	    <div class="layui-col-md12">
    {/empty} 
    	      <div class="layui-card">
    	        <div class="layui-card-header">
    	        	<h3>
    								<span class="layui-breadcrumb">
    								  <a><cite>{$rsp['title']}</cite></a>
    								  <a><cite>{$rsc['title']}</cite></a>
    								</span>
    	          </h3>
    	        </div>
    	        <div class="layui-card-body">
    <div class="layui-fluid demoTable" style="margin-top: 20px;" >
           <div class="layui-inline layui-form">
              <select name="sotype" id="sotype" lay-search>
                   <option value="">请选择搜索类型</option>
                   <option value="title" {if  $sotype == "title" }selected {/if}>标题</option>
              </select>
            </div>
            <div class="layui-inline">
            	<input class="layui-input" name="sotitle" id="sotitle" value="{$sotitle}">
            </div>
     
            <button class="layui-btn" id="sear" data-type="reload">搜索</button>
     
    			<table class="layui-hide" id="demo" lay-filter="demo"></table>
    			
    			
    			<script type="text/html" id="toolbarDemo">
    			  <div class="layui-btn-container">
    			  	<a href="{:url('register_product_add',['tid'=>$tid,'cid'=>$cid,'ccid'=>$ccid])}" class="layui-btn layui-btn-sm layui-btn-primary" ><i class="layui-icon layui-icon-add-circle-fine"></i>增加</a>
    			    <button class="layui-btn layui-btn-sm layui-btn-primary" lay-event="delAll"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
    			  </div>
    			</script>
    				<script type="text/html" id="barDemo">
    					  <!--<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="add_course">排课</a>-->
    					  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    					  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="{:url('del',array('id'=>$admin['id']))}')">删除</a>
    				</script>
    			 <script type="text/html" id="titleTpl">
    			  {{#  if(d.type_mold == 1){ }}
    			          <span class="layui-badge layui-bg-blue">直播</span>
    			  {{#  } else if (d.type_mold == 2) { }}
    			          <span class="layui-badge layui-bg-cyan">点播</span>
    			  {{#  } else { }}
    			          
    			  {{#  } }}
    			</script>
    			 <script type="text/html" id="addtypTpl">
    			  {{#  if(d.add_type == 1){ }}
    			         线上
    			  {{#  } else if (d.add_type == 2) { }}
    			          <span class="layui-badge layui-bg-orange">线下</span>
    			  {{#  } else { }}
    			           线上/下
    			  {{#  } }}
    			</script>
    			 <script type="text/html" id="typeTpl">
    			  {{#  if(d.type_mold == 1){ }}
    			          <button class="layui-btn layui-btn-xs layui-btn-warm">排课</button>
    			  {{#  } else if (d.type_mold == 2) { }}
    			          <button class="layui-btn layui-btn-xs layui-btn-primary">章节</button>
    			  {{#  } else { }}
    			          
    			  {{#  } }}
    			</script>
    </div>
    	        </div>
    	      </div>
    	    </div>
    
    	  </div>
    </div> 
    <script>
    layui.use(['layer', 'form','jquery','table','element'], function(){
          var layer = layui.layer
          ,form = layui.form
          ,$= layui.$
          ,element = layui.element
          ,table=layui.table;
     
    			table.render({
    			    elem: '#demo'
    			    ,url: '{:url('register_product')}'
    			    ,limit:10
    			    ,method:'post'
    			    ,where: {action:'datatable',tid:{$tid},cid:{$cid},ccid:{$ccid}}
    			    ,toolbar: '#toolbarDemo'
    			    ,defaultToolbar: ['filter', 'print', 'exports']
    			    ,cellMinWidth: 80
    			    ,cols: [[
    			       {type:'checkbox'}
    //			      ,{field:'id', title:'ID', width:70, sort: true}
    			      ,{field:'type_mold', title:'模型', width:70, templet: '#titleTpl',sort:true}
    			      ,{field:'add_type', title:'类型', width:90, templet: '#addtypTpl',sort:true}
    			      ,{field:'title', title:'标题',edit: 'text'}
    			      ,{field:'type_mold', title:'排课/章节', width:90, templet: '#typeTpl'}
    			      ,{fixed: 'right', title:'操作', width:110, toolbar: '#barDemo'}
    			    ]]
    			    ,page: true
    			 });
    			  //监听锁定操作
    			  form.on('checkbox(lockDemo)', function(obj){
    			    layer.tips(this.value + ' ' + this.name + ':'+ obj.elem.checked, obj.othis);
    			  });
    			  
      //头工具栏事件
      table.on('toolbar(demo)', function(obj){
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event){
          case 'getCheckData':
            var data = checkStatus.data;
            layer.alert(JSON.stringify(data));
          break;
          case 'getCheckLength':
            var data = checkStatus.data;
            layer.msg('选中了:'+ data.length + ' 个');
          break;
          case 'isAll':
            layer.msg(checkStatus.isAll ? '全选': '未全选');
          break;
          case 'delAll':
            //layer.msg('11');
            //批量删除
    							  var dataall='';
    							  data = checkStatus.data;
    							  //循环把所有要删除的ID整成12,13,545
    							  for(var i=0;i<checkStatus.data.length;i++){
    									 dataall += data[i].id+",";
    								}
    								dataall=dataall.substring(0,dataall.length-1)
    								 //layer.alert(dataall);
    									 layer.confirm('真的删除行么', function(index){
    											//obj.del();
    											//id= data.id;
    											layer.close(index);
    												 $.ajax({
    														url:'{:url('register_product_del')}',
    														type:"post",
    														data:{id:dataall,m:0},
    														async:true,
    														success:function(data){
    														     if(data[0]==1){
    															    layer.msg('成功!');
    						                      table.reload('demo');//重新加载表格数据
    															}else{
    																layer.msg('失败!'+data[1]); 
    															}
    														},
    														error:function(){
    														  layer.msg('页面跳转失败!');
    														}
    												});
    									});
            
          break;
        };
      }); 
    			  
    			//排序
    			table.on('sort(demo)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
    			  
    			  //尽管我们的 table 自带排序功能,但并没有请求服务端。
    			  //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,如:
    			  table.reload('demo', {
    				initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。 layui 2.1.1 新增参数
    				,where: { //请求参数
    				   field: obj.field //排序字段
    				  ,order: obj.type //排序方式
    				}
    			  });
    			});
    			
    		   var $ = layui.$, active = {
    			//搜索
    				reload: function(){
    				  //var demoReload = $('#sotitle').val();
    				  table.reload('demo', {
    					where: {
    						 sotype: $("#sotype").val()
    						,limit: $('#limit').val()
    						,sotitle: $('#sotitle').val()
    					}
    				  });
    				}
    		  };
    		  
    		$('.demoTable .layui-btn').on('click', function(){
    		//$(document).on('click','#sear',function(){
    		    var type = $(this).data('type');
    		    active[type] ? active[type].call(this) : '';
    		  });
    		  //按enter键进行查询
    			$(document).keyup(function(event){
    			      if(event.keyCode==13){
    			         var type = $("#sear").data('type');
    		           active[type] ? active[type].call(this) : '';
    			      }
    			});
     //监听单元格编辑
    		  table.on('edit(demo)', function(obj){
    				    var value = obj.value //得到修改后的值
    				    ,data = obj.data //得到所在行所有键值
    				    ,field = obj.field; //得到字段
    			      // layer.msg('[ID: '+ data.id +'] ' + field + ' 字段更改为:'+ value);
    						 $.ajax({
    									 type: "post",
    									 url: '{:url('register_product_edit')}',
    									 data: {id:data.id,title:value,field:field,action:'ajax_update'},
    									 //dataType: "json",
    									 success: function(data){
    										// layer.msg(data['code']);
    										 if(data['code']==1){
    											 //成功
    												//更新缓存中的值
    												 data[field] = data['title'];
    											   layer.msg(data['msg']);
    											   //ptable()
    										 }else{
    											   layer.msg(data['msg']);
    //											    setTimeout(function(){
    //											    	 self.location='{:url('register_class',['tid'=>$tid,'cid'=>$cid,'ccid'=>$ccid,'id'=>$id])}';
    //											    },1000)
    										 }
    										// layer.msg('更新失败!');
    							},
    							error: function(){
    									layer.msg('更新失败!');
    							}
    						 });
    		  });
       //监听工具条
      table.on('tool(demo)', function(obj){
        var data = obj.data;
        if(obj.event === 'del'){
    			 layer.confirm('真的删除行么', function(index){
    					obj.del();
    					id= data.id;
    					layer.close(index);
    						 $.ajax({
    								url:'{:url('register_product_del')}',
    								type:"post",
    								data:{id:id,m:0},
    								async:true,
    								success:function(data){
    								     if(data[0]==1){
    									    layer.msg(data[1]);
    										  table.render({});//重新渲染
    									}else{
    										layer.msg('失败!'+data[1]); 
    										table.render({});//重新渲染
    									}
    								},
    								error:function(){
    								  layer.msg('更新失败!');
    								}
    						});
    			  });
    	  } else if(obj.event === 'edit'){
    	  	//编辑
    			      //layer.alert('编辑行:<br>'+ JSON.stringify(data))
    								layer.ready(function(){
    									  layer.open({
    										type: 2,
    										title: '编辑报名表',
    										maxmin: true,
    										area: ['95%', '95%'],
    										content: '{:url('register_product_edit')}?tid={$tid}&cid={$cid}&ccid={$ccid}&id='+data.id,
    										cancel: function(){ //刷新网页
    											  table.reload('demo');//重新加载表格数据
    											 // self.location='{:url('index')}';
    										  }
    									  });
    								});
        }
      });
     
    });
    </script>
     
    <!-- 引入分类 多选样式 开始 -->
    <script type="text/javascript" src="__STATIC__/jquery/1.8.3/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" href="__STATIC__/menu/formSelects/formSelects-v4.css"/>
    <script src="__STATIC__/menu/formSelects/formSelects-v4.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
          var formSelects = layui.formSelects;
    			formSelects.data('select15_2', 'server', {
    				  type: "post",
    			    url: '{:url('menu/menujsondata')}',
    			    data:{action:'js_category',model:'12,13'},
    			    linkage: true,
    			    linkageWidth: 130,
    			    
    						    searchUrl: '',              //搜索地址, 默认使用xm-select-search的值, 此参数优先级高
    						    searchName: 'keyword',      //自定义搜索内容的key值
    						    searchVal: '',              //自定义搜索内容, 搜素一次后失效, 优先级高于搜索框中的值
    						    keyName: 'name',            //自定义返回数据中name的key, 默认 name
    						    keyVal: 'value',            //自定义返回数据中value的key, 默认 value
    						    keySel: 'selected',         //自定义返回数据中selected的key, 默认 selected
    						    keyDis: 'disabled',         //自定义返回数据中disabled的key, 默认 disabled
    						    keyChildren: 'children',    //联动多选自定义children
    						    delay: 500,                 //搜索延迟时间, 默认停止输入500ms后开始搜索
    						    direction: 'auto',          //多选下拉方向, auto|up|down
    						    response: {
    						        statusCode: 0,          //成功状态码
    						        statusName: 'code',     //code key
    						        msgName: 'msg',         //msg key
    						        dataName: 'data'        //data key
    						    },
    						    success: function(id, url, searchVal, result){      //使用远程方式的success回调
    						    	 //如果有需要默认值的小伙伴请使用formSelects.value
    //						    	 formSelects.value('select15_2', ['349/417/419', '349/413/415'],true);
    						    	 formSelects.value('select15_2', [{$category_edit}],true);
    //						        console.log(id);        //组件ID xm-select
    //						        console.log(url);       //URL
    //						        console.log(searchVal); //搜索的value
    //						        console.log(result);    //返回的结果
    						    },
    						    error: function(id, url, searchVal, err){           //使用远程方式的error回调
    						        //同上
    						        //console.log(err);   //err对象
    						    },
    						    beforeSuccess: function(id, url, searchVal, result){        //success之前的回调, 干嘛呢? 处理数据的, 如果后台不想修改数据, 你也不想修改源码, 那就用这种方式处理下数据结构吧
    //						        console.log(id);        //组件ID xm-select
    //						        console.log(url);       //URL
    //						        console.log(searchVal); //搜索的value
    //						        console.log(result);    //返回的结果
    //						         
    						        return result;  //必须return一个结果, 这个结果要符合对应的数据结构
    						    },
    						    beforeSearch: function(id, url, searchVal){         //搜索前调用此方法, return true将触发搜索, 否则不触发
    						        if(!searchVal){//如果搜索内容为空,就不触发搜索
    						            return false;
    						        }
    						        return true;
    						    },
    						    clearInput: false,          //当有搜索内容时, 点击选项是否清空搜索内容, 默认不清空
    			});
          
    </script>
    <!-- 引入分类 多选样式 结束 -->
    </body>
    </html>
        	$where = new Where;
    		$sotitle=input('sotitle');
            $category=input('category');
    	        if($category){
    	          	$category_select="'".$category."'";
    	        }
    	        $this->assign('category_select',$category_select);
    	        
    		$action=input('action');
    		$sotype=input('sotype');
    		$page=input('page');//页数
    		$field=input('field');//字段
    		$order=input('order');//排序方式
    		$limit=input('limit');
    		$limit=$limit?$limit:10;
    		$this->assign('sotype',$sotype);
    		$this->assign('sotitle',$sotitle);
    		$this->assign('limit',$limit);
    			
    		if($action=='datatable'){
    			if($sotitle){
    				//模糊查询
    			    if($sotype=="title" || $sotype==""){
    //			        $where = [  
    //			                ['title', 'like', "%".$sotitle."%"],  
    //			            ]; 
                            $where['title'] = ['like', "%".$sotitle."%"]; 
    			    }else{  
    			            $where[$sotype] = $sotitle;
    			    }  
    			  
    			}
    			//排序
    				if($field){
    					$od=$field." ".$order;
    				}else{
    					$od="id desc";
    				}
    			if($category){
    				$where[] = ['exp',Db::raw("FIND_IN_SET('$category',category)")];
    			}else{
    				$where['deleted'] = 0;//显示正常数据,不显示回收站数据
    			}
    			$where['deleted'] = 0;
    	        $list=Db::name('products')->field('id,title,time')->where($where)->order($od)->limit($limit)->page($page)->select();
    	        $rs1=Db::name('product')->field('id')->where($where)->count();
    	        
    	        json(0,'数据返回成功',$rs1,$list);
    
    		}

    标题修改控制器代码

        	$id=input('id');
       		$action=input('action');
    		//ajax 更新标题
     			if($action=="ajax_update" && $id){//更新字段值
     				
     				    $field=input('field');
     				    $title=input('title');
    
    						//判断是否重复
    							$where1[$field] = $title;
    							$where1['deleted'] = 0;//状态 0正常 1回收站
    							$checkRepeat=checkRepeat('class',$where1,0,'');
    							if($checkRepeat>0){
    								$this->error('错误:已经存在');
    							}
    			 		//$field=$field=="name"?"title":$field;//当字段是name是要转换成数据库对应的字段title
    					$rsj=Db::name('product')->where('id', $id)->update([$field => $title]);
    					
    					if($rsj){
    						$arr['code']=1;
    						$arr['msg']="更新成功";
    						$arr['title']=$title;
    						 //$se="更新成功";
    					}else{
    						$arr['code']=2;
    						$arr['msg']="更新失败";
    						$arr['title']=$title;
    					}
    					return $arr;die;
     			}

     

    二、简单例子

    例子:

    <!DOCTYPE html>
    <html>				
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
      <title>查看缺勤学生</title>
    	<link rel="stylesheet" href="__STATIC__/layui/css/layui.css" media="all">
    	<script src="__STATIC__/layui/layui.js"></script>
    </head>
    <body style="background-color: #FFFFFF;">
    <!-- 你的HTML代码 -->
    <!-- 表格 -->
    <div class="layui-fluid demoTable" style="margin-top: 20px;" >
    	     <div class="layui-inline">
            	<input class="layui-input" name="limit" id="limit" style="width: 50px;" placeholder="行数" value="{empty name="limit"}10{else /}{$limit}{/empty}" >
           </div>
           <div class="layui-inline layui-form">
              <select name="sotype" id="sotype" lay-search>
                   <option value="">请选择搜索类型</option>
                   <option value="name" {if  $sotype == "name" }selected {/if}>用户名</option>
                   <option value="real_name" {if  $sotype == "real_name" }selected {/if}>真实姓名</option>
                   <!--<option value="tel" {if  $sotype == "tel" }selected {/if}>电话</option>-->
                   <!--<option value="email" {if  $sotype == "email" }selected {/if}>邮箱</option>-->
              </select>
            </div>
            <div class="layui-inline">
            	<input class="layui-input" name="sotitle" id="sotitle" value="{$sotitle}">
            </div>
     
            <button class="layui-btn" id="sear" data-type="reload">搜索</button>
     
     
    <table class="layui-hide" id="demo" lay-filter="demo"></table>
     
    <script type="text/html" id="barDemo">
      <a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="Record">跟踪进度</a>
    </script>
     <script type="text/html" id="titleTpl">
      {{#  if(d.state == 1){ }}
            已处理
      {{#  } else if (d.state == 2) { }}
              <span class="layui-badge layui-bg-cyan">完结</span>
      {{#  } else { }}
              <span class="layui-badge">未处理</span>
      {{#  } }}
    </script>
    </div>
    <!-- 表格end -->
     
    <!-- 表格end -->
    <script>
    layui.use(['layer', 'form','jquery','table'], function(){
          var layer = layui.layer
          ,form = layui.form
          ,$= layui.$
          ,table=layui.table;
     
    			table.render({
    			    elem: '#demo'
    			    ,url: '{:url('view_user')}'
    			    ,limit:10
    			    ,method:'post'
    			    ,where: {action:'datatable',uid: {$uid}}
    			    ,cellMinWidth: 80
    			    ,cols: [[
    			       {type:'checkbox'}
    //			      ,{field:'id', title:'ID', width:70, sort: true}
    			      ,{field:'state', title:'状态', width:80, templet: '#titleTpl'}
    			      ,{field:'name', title:'用户名', width:200}
    			      ,{field:'real_name', title:'姓名', width:100}
    			      ,{field:'pname', title:'课程', width:300}
    			      ,{field:'pname', title:'章节', width:300}
    			      ,{field:'cname', title:'班型', width:150}
    			      ,{fixed: 'right', title:'操作', width:100, toolbar: '#barDemo'}
    			    ]]
    			    ,page: true
    			 });
    			  //监听锁定操作
    			  form.on('checkbox(lockDemo)', function(obj){
    			    layer.tips(this.value + ' ' + this.name + ':'+ obj.elem.checked, obj.othis);
    			  });
    			  
    			//排序
    			table.on('sort(demo)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
    			  
    			  //尽管我们的 table 自带排序功能,但并没有请求服务端。
    			  //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,如:
    			  table.reload('demo', {
    				initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。 layui 2.1.1 新增参数
    				,where: { //请求参数
    				   field: obj.field //排序字段
    				  ,order: obj.type //排序方式
    				}
    			  });
    			});
    			
    		   var $ = layui.$, active = {
    			//搜索
    				reload: function(){
    				  //var demoReload = $('#sotitle').val();
    				  table.reload('demo', {
    					where: {
    						 sotype: $("#sotype").val()
    						,limit: $('#limit').val()
    						,sotitle: $('#sotitle').val()
    					}
    				  });
    				}
    		  };
    		  
    		$('.demoTable .layui-btn').on('click', function(){
    		//$(document).on('click','#sear',function(){
    		    var type = $(this).data('type');
    		    active[type] ? active[type].call(this) : '';
    		  });
    		  //按enter键进行查询
    			$(document).keyup(function(event){
    			      if(event.keyCode==13){
    			         var type = $("#sear").data('type');
    		           active[type] ? active[type].call(this) : '';
    			      }
    			});
       //监听工具条
      table.on('tool(demo)', function(obj){
        var data = obj.data;
        if(obj.event === 'Record'){
        	//跟踪进度
    					layer.ready(function(){
    						  layer.open({
    							type: 2,
    							title: '记录['+data.real_name+']跟踪进度',
    							maxmin: true,
    							area: ['98%', '95%'],
    							content: '{:url('view_user')}?action=addrecord&uid={$uid}&id='+data.id,
    						  });
    					});
        }
      });
     
    });
    </script>
     
    </body>
    </html>
    

    控制器:

    		$action=input('action');
    		$sotitle=input('sotitle');
    		$sotype=input('sotype');
    		$limit=input('limit');
    		$limit=$limit?$limit:1;
    		$this->assign('sotype',$sotype);
    		$this->assign('sotitle',$sotitle);
    		$this->assign('limit',$limit);
    if($action=="datatable"){
    
                        $field=input('field');//字段
    					$order=input('order');//排序方式
    	    		
    					//排序
    					if($field){
    						$od=$field." ".$order;
    					}else{
    						$od="id desc";
    					}
    					
    			        if($sotitle){
    			                $where['title'] = ['like', "%".$sotitle."%"];
    			        }
    					
    	    		    $where['deleted'] = 0;//状态 0正常 1回收站
    					$rsu=Db::name('comment')->where($where)->where('pid',$id)->order($od)->limit($limit)->page($page)->select();
    					$rsu1=Db::name('comment')->where($where)->where('pid',$id)->select();
     
    					$count = count($rsu1);//取得记录集总条数
    					json(0,'数据返回成功',$count,$rsu); 
    	    		    return $data;
    }

     

     

     

    展开全文
  • 推荐一个垃圾分类查询接口 免费

    千次阅读 2019-10-08 07:26:49
    垃圾分类小程序 使用了这个接口 API接口地址 接口名称: 用户端版本检测接口地址:https://service.xiaoyuan.net.cn/garbage/index/search请求方法: GET 响应类型: JSON 接口状态: 有效接口描述 返回的是JSON ...

    垃圾分类小程序 使用了这个接口

    API接口地址

    接口名称: 用户端版本检测接口地址: https://service.xiaoyuan.net.cn/garbage/index/search
    请求方法: GET 响应类型: JSON 接口状态: 有效
    接口描述

    返回的是JSON

    请求参数

    参数名称 kw 是否必须 是 类型 string 描述 多个关键词用空格分开

    相应数据

    如请求 https://service.xiaoyuan.net.cn/garbage/index/search?kw=苹果
    返回相应:

    {
        "code": 1,
        "msg": "",
        "data": [ { "id": 3209, // id "name": "苹果", "type": 2, // 1 干垃圾 2 湿垃圾 3 可回收物 4 有害垃圾 "category": "湿垃圾", // 分类名 "remark": "", "num": 0 }, { "id": 3725, "name": "酸奶", "type": 2, "category": "湿垃圾", "remark": "喝掉后的包装盒属于可回收物", "num": 2 } ] } 

    Author's QQ:1400090032

    转载于:https://www.cnblogs.com/moonwalkercui/p/11533324.html

    展开全文
  • 商城-实现商品分类查询

    千次阅读 2019-06-13 15:20:58
    商城-实现商品分类查询5.实现商品分类查询5.1.导入数据5.2.页面实现5.2.1.页面分析5.2.2.树组件的用法5.3.实现功能5.3.1.url异步请求5.3.2.实体类5.3.3.controller5.3.4.service5.3.5.mapper5.3.6.启动并测试 5.实现...
  • 高德地图POI分类查询

    万次阅读 热门讨论 2019-01-03 18:02:58
    项目用到了POI分类查询,文档是这样的: 不设置POI的类别,默认返回“餐饮服务”、“商务住宅”、“生活服务”这三种类别的POI,下方提供了POI分类码表,请按照列表内容设置希望检索的POI类型。(建议使用POI类型的...
  • 思路:分类和关键字查询分为以下几种情况:  1、只按照分类查询  2、值按照关键字查询  3、分类和关键字一起查询   第一种情况,值按照分类查询: 我们写了一个select下拉菜单来进行选择分类,当我们选中某一...
  • [机器学习篇]机器学习知识总结篇

    万次阅读 热门讨论 2017-03-08 22:36:48
    模糊数据查询和数据校正方法、算法、应用 #7、回归 线性回归 Logistic/Softmax回归 广义线性回归 L1/L2正则化 Ridge与LASSO Elastic Net 梯度下降算法:BGD与SGD 特征选择与过拟合 Softmax回归的...
  • demo:新闻首页的不同分类的新闻列表描述:只有最新新闻不需要根据分类查询,其他的分类下的新闻都需要添加查询条件cid,所以cid是一个可选参数,如何处理?1.定义一个空列表存放查询条件filter = []2.对参数做判断...
  • 写了一个接口,是需要根据pageNum、pageSize、keyword和typeid来做一个综合查询,在这个接口中,pageNum和pageSize是分页参数,有默认值一定不会传空,keyword是模糊搜索关键字,typeid是分类查询id,0代表全部,1、...
  • 2021年前端面试题及答案

    万次阅读 多人点赞 2020-02-11 19:29:34
    主要原理:通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 防御手段: 使用预编译,绑定变量(推荐)。 检查数据类型。 过滤特殊字符和语句。 页面不错误...
  • Oracle 参数分类参数的查看方法

    万次阅读 2010-05-12 17:50:00
    Oracle系统中的参数,根据系统使用情况可以简单分为两大类:普通参数:也就是Oracle系统正常使用的一些参数,非凡参数:包括三种,过时参数、强调参数和隐藏参数。随着Oracle数据库新版本的发布,相应每次都会增加...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    40 视图/虚表 view 41 索引 42 存储过程 procedure 42 事务 transaction 43 触发器 trigger 46 练习 46 一、单表查询练习 46 二、聚合函数练习 47 三、分组查询练习 47 四、嵌套查询练习 48 五、联接查询练习 48 六...
  • 【数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    实体化视图的结果会保存在一个普通的数据表中,在对实体化视图进行查询的时候不再会对创建实体化视图的基表进行查询,而是直接查询实体化视图对应的结果表,然后通过定期的刷新机制来更新实体化视图表中的数据。...
  • FineReport二级联动,树形查询参数设置

    千次阅读 2019-03-18 13:59:24
    1.二级联动效果 ... 此处B参数的值为依据A给出的值去查询子表 2.树形下拉效果 参数设计 &amp;amp;nbsp; &amp;amp;nbsp; 在根节点下增加一个节点,为层次1,如下图: &amp;amp;nbsp; &amp;am
  • ERP

    千次阅读 2018-11-14 22:16:03
    它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。 1.3.1.3 序列图(Sequence Diagram) 序列图是对对象之间传送消息的时间顺序的可视化表示。序列图的...
  • 由于mysql 不支持类似 oracle with ...connect的 递归查询语法 之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询. 现在发现原来一条sql语句也是可以搞定的 先来看数据表的结构如下: id name parent_...
  • 二,只是查询 wp_query 的 wp_posts表的文章 。s 搜索查询和 post_type = posts 外的其它值冲突。意思是如果类型想设为 diy ,那个有 s 时,类型一直为post 值。转自:...
  • 1.前台给定末级分类id,要求根据当前末级分类id递归方向查询分类名称如: 2.java后台代码: controller层: // 根据商品ID查询单个的商品对象 GoodsMoifiedVo goodsMoifiedVo = this.goodsService....
  • 垃圾分类查询+小程序源码

    千次阅读 2019-07-04 22:53:01
    垃圾分类查询PC端 垃圾分类查询小程序端 小程序截图.jpg 源码地址 链接:https://pan.baidu.com/s/1DrYxx5k8n7I4r5TMr7SYzg 提取码:3zjq 演示站:https://www.ggziyuan.com/ 安装教程 源码框架:ZBlogger 密码...
  • SqlParameter参数查询

    千次阅读 2016-08-07 21:17:57
    SqlParameter参数查询 2013-06-24 14:30 2999人阅读 评论(27) 收藏 举报  分类: 【.NET架构】(18)  版权声明:本文为博主原创文章,未经博主允许不得转载。  上篇博客写了...
  • 基于SSM的校园二手交易平台的设计与实现

    万次阅读 多人点赞 2018-05-06 14:24:44
    并且根据分类进行商品过滤,也可以根据站内搜索引擎进行商品的查询,并且与卖家联系,达成交易的意向,也可以发布求购的信息,让卖家查看之后,与之联系,进行交易。而此次主要是针对校园用户所设计的网站,对于数据...
  • 【JEECG技术文档】Jeecg高级查询

    千次阅读 2018-02-07 12:02:41
    1. 背景 对于用户来讲查询功能按易用性分三个层次: 1)最简单查询操作是一个输入框,全文检索,如百度,后台实现技术使用搜索引擎,需要设计和建立索引,技术较为复杂,适用于文档和信息数据库检索,但是结果很...
  • 最近在做项目时,遇到了一个问题,点击分类时带上参数id=3,查询出对应的产品,产品有一个分页,但是点击第二页的时候, url变成了不带之前id参数的跳转,导致没有了查询条件,查询不出来商品,就去寻找解决方案。 ...
  • 图像识别初识

    千次阅读 2017-08-11 23:22:42
    3)查询。 3什么是模版? 模板匹配模型。这种模型认为,识别某个图像,必须在过去的经验中有这个图像的记忆模式,又叫模板 4那么模版是怎么使用的呢? 这种模型认为,在长时记忆中存储的并不是所要识别的无数...
  • 绝对干货:WordPress自定义查询wp_query所有参数详细注释  2014/01/03 2,917  评分:  评分 4.00, 满分 5 星 11 票 +Add WordPress中文资源不算少,但真正完整全面的中文资源...
  • 在人员展示页面中有一个像后台页面list_fiter功能,方便用户对人员分类信息进行筛选,后来看了admin中filter.py的代码,发现不会。决定自己研究一下如何对数据进行筛选。 Model中有年龄、姓名、部门等字段(这里偷懒...
  • 《手机相机》参数与选择

    千次阅读 2019-08-21 20:23:49
    一、手机相机:相机照相质量的好坏绝不能只单独看其中某个参数,而是要综合权衡相机的镜头、CMOS传感器和ISP算法等所有影响相机性能的因素。手机相机可以分为前置相机和后置相机两类,其中前置相机主要用来自拍或萌...
  • 函数的参数类型

    千次阅读 2019-08-28 19:31:12
    关键字参数: 按照形参位置传入的参数被称为位置参数。如果使用位置参数的方式来传入参数值,则必须严格按照定义函数时指定的顺序来传入参数值;如果根据参数名来传入参数值,则无须遵守定义形参的顺序,这种方式被...
  • 因为这次显示的是一个参数的页面,也就是这个参数单独的类的页面,包括了这个参数有什么规格和细节上的选择,比如手机的话就是内存多少,颜色是什么,购买方式是什么 像这种分类的一般都是List集合的,为什么这么说...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,121
精华内容 69,648
关键字:

参数查询的分类