开发框架 版主:迅睿框架研发组
搜索页如何排除字段数值为空或者为0的数据呢
类型:迅睿CMS 更新时间:2023-12-27 14:38:32 module=MOD_DIR 从小到大

让模块数据按指定字段数值的大小排序,如何排除字段数值为空或者为0的数据呢?

https://www.xunruicms.com/doc/1214.html

我用文档里面的方法成功实现了,但是他也会显示数值为空的数据,导致从小到大的排序毫无意义。



请问怎么排除为空或者为0的数据,按有数值的数据从小到大来排序?

以下是我现在的代码

<a href="{Router::search_url($params, 'order', 'y2023_asc')}" class="mr20 fll tab posr {if $params.order=='y2023_asc'}on{/if}">排行榜</a>


{search module=MOD_DIR id=$searchid total=$sototal order=$params.order catid=$catid page=1 pagesize=16 urlrule=$urlrule}

具体内容

{/search}

回帖
  • 外聘专员-北京老祈
    #1楼    外聘专员-北京老祈
    2023-12-20 16:44:46
    Chrome 0
    排序是按mysql语句来的,你可以研究下载orderby语句的写法
  • 右手老茧
    #2楼    右手老茧
    2023-12-25 10:26:10
    Chrome 0
    外聘专员-北京老祈 有具体的实现方法吗?我现在新增了个数字字段,$shuzi,想根据他筛选按从小到大的方式来排列,并排除空值数据,请问具体要怎么实现呢。
  • 小波工作室
    #3楼    小波工作室
    2023-12-25 11:00:13
    Chrome 0
    可以找ai去问一下
  • 小鱼儿
    #4楼    小鱼儿
    2023-12-26 10:54:25
    Chrome 0
    module标签,然后写php接收参数,拼接sql的where条件查询就行
  • 右手老茧
    #5楼    右手老茧
    2023-12-27 11:06:07
    Chrome 0
    小鱼儿 请问我这个where的条件要怎么写?字段是yymc2022,排除0或空的数据我试了几次写的都是报错的结果
    你说的是这个自定义代码对吧{php $where=urlencode("自定义sql条件");}{module catid=$catid order=yymc2022_asc where=$where}{/module}


  • 小鱼儿
    #6楼    小鱼儿
    2023-12-27 13:54:20
    Chrome 0
    右手老茧 恩,就是{php $where=urlencode("yymc2022!=0");}
  • 小鱼儿
    #7楼    小鱼儿
    2023-12-27 14:06:52
    Chrome 0
    小鱼儿 如果你只有这个判断,可以用module标签NOT_yymc2022=0,用where是为了方便你拼接其他搜索条件
    满意答案
  • 右手老茧
    #8楼    右手老茧
    2023-12-27 14:11:06
    Chrome 0
    小鱼儿 太感谢了,已经实现了。但是现在有一个问题,他好像只按首位数字来排序,不是按照完整数据来排序,请问要怎么做?比如有数据:1、11、12、3、4按正常得是:1、3、4这样排序,但是他就是1、11、12、3、4排序,他只按照首位得数字大小来进行排序
  • 小鱼儿
    #9楼    小鱼儿
    2023-12-27 14:32:00
    Chrome 0
    右手老茧 因为你的字段是字符串,不是数字,去数据库把字段类型改成int试试,或者删了重新建一下这段,选数字类型,记得先备份在修改
  • 右手老茧
    #10楼    右手老茧
    2023-12-27 14:38:17
    Chrome 0
    小鱼儿 好得,非常感谢!!
  • 右手老茧
    #11楼    右手老茧
    2023-12-27 14:38:32
    Chrome 0
    @小鱼儿:感谢老铁,完美解决