首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

dedecms 按附加表字段排序

DedeCMS 是一个基于 PHP 和 MySQL 的开源网站内容管理系统(CMS)。它提供了丰富的功能来管理网站内容,包括文章、图片、视频等。在 DedeCMS 中,除了主表(如 dede_archives)外,还常常使用附加表来存储一些额外的信息。

基础概念

附加表通常用于存储与主表相关但不适合直接放在主表中的数据。例如,文章的作者信息、发布时间等可能存储在附加表中。DedeCMS 中的附加表通常以 dede_ 开头,如 dede_addonarticledede_addonflash 等。

相关优势

  1. 数据分离:将不同类型的数据分开存储,便于管理和维护。
  2. 扩展性:通过添加附加表,可以灵活地扩展系统的功能。
  3. 性能优化:对于大数据量的表,分离数据可以提高查询效率。

类型

DedeCMS 中的附加表类型多种多样,常见的有:

  • dede_addonarticle:文章附加表
  • dede_addonflash:Flash 附加表
  • dede_addonsoft:软件附加表
  • dede_addonimages:图片附加表

应用场景

附加表常用于以下场景:

  • 存储文章的作者、分类、标签等信息。
  • 存储图片、视频的多媒体信息。
  • 存储软件下载的相关信息。

排序问题

如果你需要按照附加表的某个字段进行排序,可以通过 SQL 查询来实现。假设你要按照 dede_addonarticle 表中的 sortrank 字段进行排序,可以使用以下 SQL 语句:

代码语言:txt
复制
SELECT * FROM dede_archives AS a
LEFT JOIN dede_addonarticle AS aa ON a.id = aa.aid
ORDER BY aa.sortrank ASC;

遇到的问题及解决方法

问题:为什么按照附加表字段排序没有效果?

  • 原因:可能是 SQL 查询语句编写有误,或者附加表中没有相应的数据。
  • 解决方法
    1. 检查 SQL 查询语句是否正确。
    2. 确认附加表中有相应的数据。
    3. 确保字段名拼写正确,区分大小写。

示例代码

以下是一个简单的示例,展示如何在 DedeCMS 中按照附加表字段排序:

代码语言:txt
复制
<?php
// 连接数据库
$cfg_dbhost = 'localhost';
$cfg_dbname = 'dedecms';
$cfg_dbuser = 'root';
$cfg_dbpwd = '';
$cfg_dbprefix = 'dede_';

$db = new mysqli($cfg_dbhost, $cfg_dbuser, $cfg_dbpwd, $cfg_dbname);

if ($db->connect_error) {
    die("连接失败: " . $db->connect_error);
}

// 查询并按照附加表字段排序
$sql = "SELECT * FROM dede_archives AS a
        LEFT JOIN dede_addonarticle AS aa ON a.id = aa.aid
        ORDER BY aa.sortrank ASC";

$result = $db->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - 标题: " . $row["title"]. " - 排名: " . $row["sortrank"]. "<br>";
    }
} else {
    echo "0 结果";
}

$db->close();
?>

参考链接

通过以上方法,你可以轻松地在 DedeCMS 中按照附加表的字段进行排序,并解决相关问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

dede:arclist orderby=weight dedecms列表页文章按权重排序无效问题

平时我们有时会发现dedecms列表页文章按权重排序无效问题,找到list解析文件include/arc.listview.class.ph,发现排序规则里面并没有按照weight排序的判断,于是乎修改程序加入排序规则...,大概在771行,加入下面红色代码 //排序方式 $ordersql = ''; if($orderby=="senddate" || $orderby=="id") {...order by arc.sortrank $orderWay"; }   同时修改条件,在812行左右,加入|weight参数 //如果不用默认的sortrank或id排序...|lastpost|weight/', $orderby))   有的朋友反映说改了不能用,再改一个地方:/include/taglib/arclist.lib.php加入红色的语句 //文档排序的方式...= " ORDER BY rand()"; else $ordersql = " ORDER BY arc.sortrank $orderWay";   arclist 对weight的排序也不准确

2.5K30

MYSQL用法(十六) MySQL按指定字段自定义列表排序

一、 ORDER BY 排序 要求:按照字段IS_NEW_PROJ的降序、字段LOAN_APR的降序、字段GMT_BUY_START的升序排序 sql语句如下: SELECT b.PROJECT_ID...二、 ORDER BY FIELD排序(自定义排序规则) 要求:按照字段PROJECT_STATUS指定的顺序排序 sql语句如下: SELECT b.PROJECT_ID AS project_id...三、 ORDER BY FIELD排序升级(多条件组合排序) 要求:按照字段IS_NEW_PROJ降序、字段PROJECT_STATUS指定的顺序排、字段LOAN_APR降序、字段GMT_BUY_START...四、 ORDER BY 排序终极版(多条件组合排序+自定义排序) 要求:按照字段IS_NEW_PROJ降序、字段PROJECT_STATUS指定的顺序排序、字段GMT_BUY_START降序、字段PROJECT_STATUS...指定的顺序排序 sql语句如下: SELECT b.PROJECT_ID AS project_id, b.PROJECT_TITLE AS project_title, b.PROJECT_STATUS

2.5K30
  • 多个字段中如何按其中两个进行排序(二次排序)

    多个字段中如何按其中两个进行排序(二次排序) 1 原理     二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果。     ...这里主要讲如何使用一个Mapreduce就可以实现二次排序。Hadoop有自带的SecondarySort程序,但这个程序只能对整数进行排序,所以我们需要对其进行改进,使其可以对任意字符串进行排序。...每个分区内又调用job.setSortComparatorClass设置的key比较函数类排序。可以看到,这本身就是一个二次 排序。...            String line = value.toString();             // 调用java自己的工具类StringTokenizer(),将map输入的每行字符串按规则进行分割成每个字符串...IntPair.class, true);         }         // Compare two WritableComparables.         // 重载 compare:对组合键按第一个自然键排序分组

    4.9K80

    整理的dedecms标签大全,方便查找

    为了方便查找,ytkah特地整理了dedecms标签,大家可以用ctrl+F实现搜索。...§ orderby='hot' 或 orderby='click' 表示按点击数排列 § orderby='sortrank' 或 orderby='pubdate' 按出版时间排列 § orderby...='near' § orderby=='lastpost' 按最后评论时间 § orderby=='scores' 按得分排序 § orderby='id' 按文章ID排序 § orderby='rand...推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b] noflag = '' 同flag,但这里是表示不包含这些属性 orderway='desc' 值为 desc 或 asc ,指定排序方式是降序还是顺向排序...,默认为降序 subday='天数' 表示在多少天以内的文档 用arclist调用于附加表字段的方法: 要获取附加表内容,必须符合两个条件 1、指定 channelid 属性 2、指定要获得的字段

    8.8K50

    保存一下dedecms数据库表和字段说明,方便日后查询

    玩dedecms有一段时间,对它的字段不是很了解,在此做个记录,方便日后查询 dede数据库字段说明: dede_addonarticle 附加文章表 aid int(11) 文章编号 typeid...int(11) 分类栏目编号 body mediumtext 文章内容 dede_addonflash 附加Flash表 aid int(11) FLASH编号 typeid int(11) 分类栏目编号...作品等级 width smallint(6) 影片宽度 height smallint(6) 影片高度 flashurl varchar(80) FLASH地址 dede_addonimages 附加图集表...col smallint(6) 多列式参数(列) isrm smallint(6) 是否下载远程图片 ddmaxwidth smallint(6) 小图片宽度限制 dede_addonsoft 附加软件表...) 程序演示地址 softsize varchar(10) 软件大小 softlinks text 软件下载链接列表 introduce text 软件介绍 dede_addonspec 附加专题表

    2.3K40

    用Dedecms5.7的arclist标签调用文章内容

    首先大家都知道在Dedecms中,list标签是可以调用文章内容的,调用格式就不再此冗述了。...用Dedecms中的arclist标签也是可以在列表页调用文章内容的,虽然在官方的标签说明中,arclist标签的底层标签中不包含body。...channelid=’1′} [field:body/] {/dede:arclist}   重点就是addfields=’body’ channelid=’1′这部分,意思为调用ID为1的内容模型中的附加字段...因此除了在列表页中加入上述代码外,还需要进入Dedecms后台–核心–频道模型–内容模型管理–普通文章,点击进入后,在“列表附加字段”这个项目中添加字段:body,这样就可以了。...(注:在5.7中,好像那个列表附加字段。) 以上文字是转载的。可以使用的。

    5.7K10

    DedeCMS织梦设置删除文章同步删除图片和附件策略

    所以这里需要考虑是否可以将DedeCMS织梦程序删除文章的时候也同时将图片和附件删除。目前这个办法老蒋还没有用到,不过我把解决方法整理过来。...这里的解决方法是要修改DedeCMS系统核心文件的,毕竟基本上所有的程序都不带这样的功能,包括我们使用的WordPress默认也没有自带这个功能的,都需要后期的添加插件或者代码修改实现。...return false; } function litimgurls($imgid=0){ global $lit_imglist; $dsql = new DedeSql(false); //获取附加表...dede_channeltype AS c ON a.channel=c.id where a.id='$imgid'"); $addtable = trim($row['addtable']); //获取图片附加表...imgurls字段内容进行处理 $row = $dsql->GetOne("Select imgurls From `$addtable` where aid='$imgid'"); //调用inc_channel_unit.php

    2.6K20

    10个常用的eyoucms易优CMS标签(织梦CMS迁移可用)

    getall='0' row='100'} {$field.tag}(文档数:{$field.total}) {/eyou:tag} 这个和我们看到的DEDECMS...表示同级栏目 type='top' 表示顶级栏目 type='sonself' 表示当前下级栏目以及同级栏目 type='first' 表示当前栏目ID的最顶级栏目下的第一级全部栏目 sort='' 标签排序方式...sort='new' 按最新排序 sort='rand' 随机排序 sort='week' 按周统计排序 sort='month' 按月统计排序 sort='hot...' 按点击数排序 sort='total' 按文档数排序 name='' 变量 empty='' 没有数据时显示的文案 mod='' 每隔N行输出的内容 id='' 可以任意指定循环里的变量名替代...field,假设id='field1',模板调用如:{$field.title} 变成 {$field1.title} 底层字段: 我们看看对应的参数。

    3.1K10

    Mysql Client 任意文件读取攻击链拓展

    基本用法(导入文件test.txt到table1表中,txt文件中的行分隔符为\r\n,默认tab键为字段分隔符,txt文件中的每个字段按顺序对应column1、column2,。。。...导入表中) load data infile "/test.txt" into table1 lines terminated by '\r\n' (colunm1,colunm2,...)...如果字段分隔符不是tab,可加入:fields terminated by ‘分隔符’ 知道了该语法的基本用法之后,我们看一下在渗透中的用法,也就是读文件。...dedecms 后台反序列化漏洞 to SSRF dedecms 后台,模块管理,安装UCenter模块。开始配置 ? 首先需要找一个确定的UCenter服务端,可以通过找一个dz的站来做服务端。.../dedecms.phar/test.txt 监听5555可以收到 ? ?

    1.7K20

    织梦DEDECMS标题过长被限制长度显示不全解决方法

    最近品自行发现我的织梦DEDECMS站有个问题,文章标题全是一样的长度,而且有些稍微长点的文章标题都被截取成固定长度的标题了,导致了文章标题显示不全,不仅是后台,前台也是一样的问题。...品自行博客通过以下几个步骤解决:1、登录织梦DEDECMS的网站后台,依次点击:系统》系统设置》系统基本参数》其他选项,找到文档标题最大长度,默认是60,改为你要的长度(如:我这里改为255)2、进入自己网站的...phpMYAdmin进行数据库管理,在左侧找到表dede_archives,然后点击“dede_archives”旁边的小图标(根据myphpadmin的版本不一样,显示的图标也不一样),找到表里面的title...字段(如下图),这里改为255。...如果前段显示的文章列表标题被截断的话,请修改网站模板文章列表标签代码中的titlelen="数字"(将数字修改为你想要的的文章标题长度即可,60代表60个字符,也就是30个汉字。)

    3.1K40

    SQL函数 %SQLSTRING

    SQL函数 %SQLSTRING将值排序为字符串的排序规则函数。...请注意, maxlen 包括附加的前导空格。可以用双括号将 maxlen 括起来以抑制文字替换:((maxlen))。描述%SQLSTRING 将表达式转换为按(区分大小写)字符串排序的格式。...这个附加的空格强制将 NULL 和数值作为字符串进行整理。从数字中删除前导零和尾随零。因为 %SQLSTRING 将空格附加到所有值,所以它将 NULL 值整理为空格,字符串长度为 1。...不要在其他用户访问表的数据时重建索引。这样做可能会导致查询结果不准确。...ORDER BY 子句使用这个两个字符的字段将行放在一个粗略的排序顺序中:SELECT Name, %SQLSTRING(Name,3) AS FirstTwoFROM Sample.PersonORDER

    1.2K20

    「ClickHouse系列」ClickHouse之MergeTree原理

    主要的功能点: 存储按主键(primary key)排序的数据. 这允许用户可以创建一个小型的稀疏索引, 有利于更快的在表中找到索要的数据....ReplicatedMergeTree('/clickhouse/tables/#_tenant_id_#/#__appname__#/#_at_date_#/{shard}/hits', '{replica}') ORDER BY: 按指定字段进行排序...如果该表不需要排序, 可以使用ORDER BY tuple()语法. PARTITION BY: 指定分区字段, 可选 分区字段一般是一个Date类型或者DateTime类型的字段....SAMPLE BY: 取样表达式, 可选 如果使用了SAMPLE BY子句, 那么SAMPLE BY指定的字段必须是主键(或排序字段)所包含的字段....数据存储 一个表由按主键排序的数据parts组成. 当在表中插入数据时, 会创建单独的数据parts, 并对每个数据parts按主键进行字典排序.

    2.9K30

    性能优化-如何选择合适的列建立索引

    3、如何选择合适的列建立索引 1、在where从句,group by从句,order by从句,on从句中的列添加索引 2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,...A、我们先查看一下表结构 desc payment; ? B、分别查看这两个字段中不同的id的数量,数量越多,则表明离散程度越大:因此可以通过下图看出:customer_id 离散程度大。 ?...结论:由于customer_id 离散程度大,使用index(customer_id,staff_id)好 C、mysql联合索引 ① 命名规则 :表名_字段名 1、需要加索引的字段,要在where条件中...2、利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。...复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。

    2.1K30

    在VFP9中利用CA对远程数据的存取进行管理(二)

    2、 UPDATENAMELIST:必须提供一个本地和远程的字段名列表对,它们有逗号分隔,每一对名字中包含一个本地字段名,紧跟一个远程字段名,远程字段名前TABLES中的表名。...BeroreUpdate AfterUpdate BeforeDelete AfterDelete 总的来讲,使用CA对数据进行存取时,可以按如下的原则来进行设置...例如:可以在这个事件中为临时表的结果进行排序: PROCEDURE AfterCursorFillL PARAMETERS lUseCursorSchema, noDataOnLoad, cSelectCmd...参数:cAlias,指定所附加的临时表和表别名。以下例子演示了怎样在BeforeCursorAttach中打开一个表,然后调用CursorAttach方法来进行附加。...cAlias是附加的临时表的别 名,lResult的值表明附加是否成功。可以利用本事件对附加的临时表进行用户定制处理、执行校验规则等等,从而使用临时表的数据能够附合我们的使用要 求。

    1.5K10

    【译】20个 Laravel Eloquent 小技巧(下)

    自定义属性排序 假设你有下面的一段代码: (设定了一个在返回对象时候的附加属性 ‘full_name’参见 tips5 模型属性: 时间戳, 附加属性(appends) 等) function getFullNameAttribute...我们需要在得到结果以后再对他们进行排序。...(一个是 SQL 语句,自定义属性是数据库没有的字段当然不能直接用。...全局范围(global scope)内的默认排序 如果你希望User :: all()始终按名称字段排序,该怎么办? 你可以分配全局的查询作用域。 让我们回到上面已经提到的boot()方法。...用于大表大集合的 Chunk()方法 不完全与Eloquent相关,它更多是Collection 集合类提供的方法,但仍然很强大 —— 处理更大的数据集,你可以将它们分成几块。

    2.8K10

    SQL排序(一)

    默认的字符串排序规则是SQLUPPER;为每个名称空间设置此默认值。 SQLUPPER排序规则将所有字母都转换为大写(出于排序的目的),并在字符串的开头附加一个空格字符。...此转换仅用于整理目的;在InterSystems中,无论所应用的排序规则如何,SQL字符串通常以大写和小写字母显示,并且字符串的长度不包括附加的空格字符。...可以按以下方式指定排序规则:命名空间默认值表字段/属性定义索引定义查询 SELECT项查询DISTINCT和GROUP BY子句排序类型排序规则可以在字段/属性的定义或索引的定义中指定为关键字。...附加这个空格字符的原因是为了强制将数值作为字符串进行整理(因为空格字符不是有效的数字字符)。...转换为大写的SQL排序规则不会转换eszett, eszett保持为单个小写字母不变。表字段/属性定义排序在SQL中,排序规则可以分配为字段/属性定义的一部分。字段使用的数据类型确定其默认排序规则。

    1.5K20

    面试热点话题:聊聊MySQL索引“B+Tree”的前世今生,

    在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。...对于非常小的表,大部分情况下简单的全表扫描更高效; ----   因此应该只为最经常查询和最经常排序的数据列建立索引。...为所有叶子节点增加了一个链指针,意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同,很适合查找范围数据。说明支持范围查询和天然排序。...B+树的磁盘读写代价更低 B+树的查询效率更加稳定   要知道的是,你每次创建表,系统会为你自动创建一个基于ID的聚集索引(上述B+树),存储全部数据;你每次增加索引,数据库就会为你创建一个附加索引(上述...' and age = 26;   由于附加索引中只有name 和 age,因此命中索引后,数据库还必须回去聚集索引中查找其他数据,这就是回表,这也是你背的那条:少用select * 的原因。

    48620
    领券