帝国论坛帝国网站管理系统交流区帝国CMS使用交流[求助][e:loop]中怎么去除调用的重复字段 【本版专题贴子】  
 1/2     1 2 ›› ›|
主题:[求助][e:loop]中怎么去除调用的重复字段 [加入收藏夹]   

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[求助][e:loop]中怎么去除调用的重复字段
        [e:loop={2,10,1,0,'',"writer='$navinfor[writer]'",'onclick desc'}]

在实际调用中,文章表里同一个作者有很多文章,而只需要显示最多点击数的一篇就可以了,求高手指教。谢谢。




2024-01-14 16:36:12 已设置保密 顶部 回复 引用 报告 编辑 删除

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

使用这个可以解决,但是显示数量与预设的15就少了,怎么能控制仍然显示15条?求高手。
<?php
$cfbt="|";
?>

[e:loop={2,15,1,0,'','onclick desc'}]

<?php
if(stristr($cfbt,"|".$bqr['writer']."|"))
{
continue;
}
$cfbt.=$bqr['writer']."|";
?>




2024-01-14 19:06:08 已设置保密 顶部 回复 引用 报告 编辑 删除

pmume
用户头衔:探花

精华贴   :0
发贴数   :3758
经验值   :10108
注册时间:2009-12-22
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

<?php
$top_articles = [];

// 获取点击最多的50篇文章
$result = $empire->query("SELECT * FROM phome_ecms_news ORDER BY onclick DESC LIMIT 50");
// 遍历结果,选择每个作者点击数最多的文章,确保不同作者
while ($row = $empire->fetch($result)) {
    $writer = $row['writer'];
    if (!isset($top_articles[$writer]) || $row['onclick'] > $top_articles[$writer]['onclick']) {
        $top_articles[$writer] = $row;
    }
}

// 按点击数降序排列
usort($top_articles, function ($a, $b) {
    return $b['onclick'] - $a['onclick'];
});

// 选择前10篇文章
$selected_articles = array_slice($top_articles, 0, 10);

// 在模板中显示
foreach($selected_articles as $infor){
        // html代码
}
?>




东坡网 DP1037.com

帝国CMS二次开发、插件定制、性能优化、帝国站群

QQ:2253145337 帝国站长互助QQ群:308293433

2024-01-14 19:30:00 已设置保密 顶部 回复 引用 报告 编辑 删除

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

谢谢大神回复,我只想要专栏为2的文章列表,我是小白,该怎样修改?谢谢。
另外:
[e:loop={2,15,1,0,'','onclick desc'}]

还可以嵌入吗?

我现在的代码是:

<ul>
<?php
$cfbt="|";
?>
[e:loop={2,25,1,0,'','onclick desc'}]
<?php
if(stristr($cfbt,"|".$bqr['writer']."|"))
{
continue;
}
$cfbt.=$bqr['writer']."|";
?>


         <li><a href="<?=$bqsr[classurl]?>"><font color="#701b04"><?=$bqr[writer]?></font></a> <a href="<?=$bqsr[titleurl]?>"><?=$bqsr[title]?><?=esub($bqr[title],68)?></a> <font color="#701b04"><?=$bqr[onclick]?></font></></li>
        [/e:loop]
               
            </ul>

[该贴被修改 3 次,最后修改时间 2024-01-15 12:56:02 ]



2024-01-15 12:49:46 已设置保密 顶部 回复 引用 报告 编辑 删除

zhxin
用户头衔:探花

精华贴   :0
发贴数   :3773
经验值   :10388
注册时间:2013-01-09
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

加条件classid=栏目id




2024-01-16 07:54:36 已设置保密 顶部 回复 引用 报告 编辑 删除

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

我这样设置后不显示:

<?php
$top_articles = [];

// 获取点击最多的50篇文章
$result = $empire->query("SELECT * FROM phome_ecms_article  WHERE classid = 2 AND newstime>UNIX_TIMESTAMP()-86400*365 ORDER BY onclick DESC LIMIT 50");
// 遍历结果,选择每个作者点击数最多的文章,确保不同作者
while ($row = $empire->fetch($result)) {
    $writer = $row['writer'];
    if (!isset($top_articles[$writer]) || $row['onclick'] > $top_articles[$writer]['onclick']) {
        $top_articles[$writer] = $row;
    }
}

// 按点击数降序排列
usort($top_articles, function ($a, $b) {
    return $b['onclick'] - $a['onclick'];
});

// 选择前10篇文章
$selected_articles = array_slice($top_articles, 0, 15);

// 在模板中显示
foreach($selected_articles as $infor){
<li><i></i><a href="<?=$bqsr[classurl]?>"><font color="#701b04"><?=$bqr[writer]?></font></a> <a href="<?=$bqsr[titleurl]?>"><?=$bqsr[title]?><?=esub($bqr[title],68)?></a> <font color="#701b04"><?=$bqr[onclick]?></font></></li>
}
?>




2024-01-16 16:47:22 已设置保密 顶部 回复 引用 报告 编辑 删除

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

敬请指教:

<?php
$top_articles = [];

// 获取点击最多的50篇文章
$result = $empire->query("SELECT * FROM phome_ecms_article WHERE classid = 2 AND newstime>UNIX_TIMESTAMP()-86400*365 ORDER BY onclick DESC LIMIT 50");
// 遍历结果,选择每个作者点击数最多的文章,确保不同作者
while ($row = $empire->fetch($result)) {
    $writer = $row['writer'];
    if (!isset($top_articles[$writer]) || $row['onclick'] > $top_articles[$writer]['onclick']) {
        $top_articles[$writer] = $row;
    }
}

// 按点击数降序排列
usort($top_articles, function ($a, $b) {
    return $b['onclick'] - $a['onclick'];
});

// 选择前15篇文章
$selected_articles = array_slice($top_articles, 0, 15);

// 在模板中显示
foreach($selected_articles as $infor){
<li><i></i><a href="<?=$bqsr[classurl]?>"><font color="#701b04"><?=$bqr[writer]?></font></a> <a href="<?=$bqsr[titleurl]?>"><?=$bqsr[title]?><?=esub($bqr[title],68)?></a> <font color="#701b04"><?=$bqr[onclick]?></font></></li>
}
?>




2024-01-16 17:21:15 已设置保密 顶部 回复 引用 报告 编辑 删除

点到为止
用户头衔:探花

精华贴   :0
发贴数   :6565
经验值   :20585
注册时间:2008-01-07
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

sql中要指定终极栏目id




2024-01-17 07:27:29 已设置保密 顶部 回复 引用 报告 编辑 删除

秋天一叶
用户头衔:举人

精华贴   :0
发贴数   :184
经验值   :809
注册时间:2012-12-18
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

原帖由 点到为止 于 2024-01-17 07:27:29 发表
sql中要指定终极栏目id

谢谢,我这个不是终极栏目,那就是说这种方法用不了啦?




2024-01-17 08:58:05 已设置保密 顶部 回复 引用 报告 编辑 删除

tm2014
用户头衔:探花

精华贴   :0
发贴数   :2388
经验值   :6796
注册时间:2014-11-13
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

in (终极栏目id1,id2)




2024-01-17 14:01:17 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/2     1 2 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1