在Dedecms CMS的问答系统中,问题通常被分为两类:未解决的问题和已解决的问题。这种分类是通过数据库表dede_ask中的status字段来实现的。具体来说,当会员发布一个问题时,status字段会被设置为0,表示这是一个刚发布且未解决的问题。而其他情况下,status值不为0,则表示该问题已被解决。
为了在问答系统的前台展示这些信息,我们需要编写一个函数来分别获取未解决和已解决的问题数量。这个函数会将结果存储在一个数组中,并返回给调用者。
### 函数设计与实现
首先,定义一个空数组$data,用于存储查询结果。我们将未解决的问题数量存储在键'solving'中,而已解决的问题数量则存储在键'solved'中。
$data['solving'] = 0; // 未解决的问题数
$data['solved'] = 0; // 已解决的问题数
接下来,我们编写SQL查询语句,从dede_ask表中获取status字段及其对应的计数。这里使用了GROUP BY子句,按status字段进行分组统计。
$query = "SELECT status, COUNT(status) AS dd FROM `dede_ask` GROUP BY status ";
执行查询后,遍历结果集。如果status值为0,则将其计数dd赋值给$data['solving'];否则,将计数累加到$data['solved']中。
$this->dsql->Execute('me', $query);
while ($tmparr = $this->dsql->GetArray()) {
if ($tmparr['status'] == 0) {
$data['solving'] = $tmparr['dd'];
} else {
$data['solved'] += $tmparr['dd'];
}
}
最后,返回包含两个字段('solving'和'solved')的数组$data。
### 总结
通过上述步骤,我们可以轻松地从Dedecms的问答系统中获取未解决和已解决的问题数量。这个功能对于提升用户体验非常重要,因为它可以帮助用户快速了解哪些问题是亟待解决的,哪些问题已经有了答案。
位置:
/ask/model/mquestion.php
返回值:
数组