Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已经确认] space_doing.php的代码有小问题

[复制链接]
xiongrui888 发表于 2009-3-11 23:32:34 | 显示全部楼层 |阅读模式
本帖最后由 茄子 于 2009-3-12 09:50 编辑

在space_doing.php中有一段代码是这样的:
  1. if($doids) {
  2.         $values = array();
  3.         $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('docomment')." WHERE doid IN (".simplode($doids).")");
  4.         while ($value = $_SGLOBAL['db']->fetch_array($query)) {
  5.                 $values[$value['dateline']] = $value;
  6.         }
  7.         
  8.         //排序
  9.         ksort($values);
复制代码
这里将读取的回复保存到$values[$value['dateline']] 是为了后面的排序,但直接这样处理有个问题就是,若读取的几条回复的dateline相同,将只能显示其中的最后一条。
看下图:

这里是同一时间对同一记录的两条回复

最后显示时只显示后一条

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| xiongrui888 发表于 2009-3-12 09:33:39 | 显示全部楼层
本帖最后由 xiongrui888 于 2009-3-12 09:41 编辑

这样修改即可:
将89行改为$values[$value['dateline']][] = $value;

        foreach ($values as $value) {   
                realname_set($value['uid'], $value['username']);
                $newdoids[$value['doid']] = $value['doid'];  
                if(empty($value['upid'])) {
                        $value['upid'] = "do$value[doid]";
                }
                $tree->setNode($value['id'], $value['upid'], $value);
        }
改为:
        foreach ($values as $valuedateline) {
                foreach ($valuedateline as $value) {
                realname_set($value['uid'], $value['username']);
                $newdoids[$value['doid']] = $value['doid'];        
                if(empty($value['upid'])) {
                        $value['upid'] = "do$value[doid]";
                }
                $tree->setNode($value['id'], $value['upid'], $value);
        }
        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

茄子 发表于 2009-3-12 09:50:57 | 显示全部楼层
ok
回复

使用道具 举报

C43F 发表于 2009-3-20 18:20:57 | 显示全部楼层

89
改成
$values[$value['id']] = $value;
下面就会少一个foreach
回复

使用道具 举报

 楼主| xiongrui888 发表于 2009-3-20 19:27:35 | 显示全部楼层
4# C43F


这么改就不能对$values数组按时间排序了。
回复

使用道具 举报

C43F 发表于 2009-3-20 19:33:38 | 显示全部楼层
按照id排序,显示结果是一样的
因为是树型结构
回复

使用道具 举报

 楼主| xiongrui888 发表于 2009-3-23 11:48:18 | 显示全部楼层
楼上的方法似乎也行得通哦
回复

使用道具 举报

C43F 发表于 2009-3-23 12:17:36 | 显示全部楼层
id是递增的,也是唯一的
所以就可以
回复

使用道具 举报

 楼主| xiongrui888 发表于 2009-3-23 22:53:29 | 显示全部楼层
还有这些记录在数据库中本身就是按时间顺序排列的,读取后,也是按时间排好的了
回复

使用道具 举报

bffun 发表于 2009-3-24 16:36:38 | 显示全部楼层
都是强人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 06:58 , Processed in 0.034727 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表