JoomlaStats添加按单元、分类、栏目、独立ip统计等

注意现在是简要的基于joomlaStats组件的再次开发,功能还需加强
新建统计数据库
CREATE TABLE `yggj`.`mycode_jstats_all` (
`ip` VARCHAR( 50 ) NOT NULL ,
`userid` INT( 11 ) NOT NULL ,
`useragent` VARCHAR( 255 ) NOT NULL ,
`Refere` VARCHAR( 255 ) NOT NULL ,
`requestpage` VARCHAR( 255 ) NOT NULL ,
`time` DATE NOT NULL ,
`itemid` INT( 11 ) NOT NULL ,
`option` VARCHAR( 50 ) NOT NULL ,
`view` VARCHAR( 50 ) NOT NULL ,
`contentid` INT( 11 ) NOT NULL
) ENGINE = MYISAM


前台统计代码在/components/com_joomlastats/jommlastats.inc.php中:
function getStatsAll(){
global $mainframe,$database;
$userid = $this->UserId;
$useragent = $this->UserAgent ;
$requestpage = $this->RequestedPage;
$ip = $this->IpAddress;
$time = $mainframe->requestTime;
$time = date("Y-m-d H:i:s",strtotime($mainframe->requestTime));
$itemid = JRequest::getCmd( 'Itemid' );
$contentid = JRequest::getCmd( 'id' );
$option = JRequest::getCmd( 'option' );
$refere = $this->refere;
$view = JRequest::getCmd( 'view' );

$sql = "INSERT INTO #__jstats_all (ip,requestpage,userid,useragent,`time`,itemid,contentid,`option`,refere,view) " .
"VALUES ('$ip','$requestpage','$userid','$useragent','$time','$itemid','$contentid','$option','$refere','$view')";

$database->setQuery($sql);
$database->query();
}

将每次点击取得的数据存入#__jstats_all表。

后台
找到后台语言文件ch.ini.php在[menu]下添加
r15=按单元统计
r16=按分类统计
r17=按栏目统计
r18=独立ip统计
。。。
就可以由admin.joomlasats.html.php中的DisplayTitle()函数打印出相应菜单


/administrator/components/com_joomlastats/admin.joomlastats.php中添加:
case "r15":
$JoomlaStatsEngine->JoomlaStatsHeader();
echo $JoomlaStatsEngine->getSecStats();//单元统计
$JoomlaStatsEngine->JoomlaStatsfooter();
break;
case "r16":
$JoomlaStatsEngine->JoomlaStatsHeader();
echo $JoomlaStatsEngine->getCatStats();//分类统计
$JoomlaStatsEngine->JoomlaStatsfooter();
break;
case "r17":
$JoomlaStatsEngine->JoomlaStatsHeader();
echo $JoomlaStatsEngine->getItemStats();//栏目统计
$JoomlaStatsEngine->JoomlaStatsfooter();
break;
case "r18":
$JoomlaStatsEngine->JoomlaStatsHeader();
echo $JoomlaStatsEngine->geIpStats();//独立ip统计
$JoomlaStatsEngine->JoomlaStatsfooter();
break;

这样点击相应菜单就可以转向对应的处理函数,下面实现这些方法;
/administrator/components/com_joomlastats/admin.joomlastats.html.ph中实现
getSecStats();getCatStats();getItemStats();geIpStats();
function getSecStats(){
global $database;
$sql = "select count(*) as count,contentid from #__jstats_all where `option`='com_content' and `view` = 'section' group by contentid ";
$database->setQuery($sql);
$rows = $database->loadObjectList();
if($rows){?>
<table class="adminform" width="100%" border="0" cellspacing="5" cellpadding="0">
<? foreach($rows as $key=> $row){
$sql1 = "select title from #__sections where id=$row->contentid";
$database->setQuery($sql1);
$rs = $database->loadObjectList();
?>
<tr>
<td>
<? echo $row->contentid;?>
</td>
<td>
<? echo $rs[0]->title;?>
</td>
<td>
<? echo $row->count;?>
</td>
</tr>
<?}?>
</table>
<?}
}

function getCatStats(){
global $database;
$sql = "select count(*) as count,contentid from #__jstats_all where `option`='com_content' and `view` = 'category' group by contentid ";
$database->setQuery($sql);
$rows = $database->loadObjectList();
if($rows){?>
<table class="adminform" width="100%" border="0" cellspacing="5" cellpadding="0">
<? foreach($rows as $key=> $row){
$sql1 = "select title from #__categories where id=$row->contentid";
$database->setQuery($sql1);
$rs = $database->loadObjectList();
?>
<tr>
<td>
<? echo $row->contentid;?>
</td>
<td>
<? echo $rs[0]->title;?>
</td>
<td>
<? echo $row->count;?>
</td>
</tr>
<?}?>
</table>
<?}
}

function getItemStats(){
global $database;
$sql = "select count(*) as count,itemid from #__jstats_all group by itemid order by count desc";
$database->setQuery($sql);
$rows = $database->loadObjectList();
if($rows){?>
<table class="adminform" width="100%" border="0" cellspacing="5" cellpadding="0">
<? foreach($rows as $key=> $row){
$sql1 = "select params from #__menu where id=$row->itemid";
$database->setQuery($sql1);
$rs = $database->loadObjectList();
$result = new JParameter( $rs[0]->params );
$pagetitle = $result->get('page_title');
?>
<tr>
<td>
<? echo $row->itemid;?>
</td>
<td>
<? echo $pagetitle;?>
</td>
<td>
<? echo $row->count;?>
</td>
</tr>
<?}?>
</table>
<?}
}

function getIpStats(){
global $database;
$sql = "select count(*) as count,ip from #__jstats_all group by ip order by count desc";
$database->setQuery($sql);
$rows = $database->loadObjectList();
if($rows){?>
<table class="adminform" width="100%" border="0" cellspacing="5" cellpadding="0">
<? foreach($rows as $key=> $row){
?>
<tr>
<td>
<? echo $row->ip;?>
</td>
<td>
<? echo $row->count;?>
</td>
</tr>
<?}?>
</table>
<?}
}

效果图:

[img]/upload/attachment/115427/f913e3a3-27bb-3cf3-8d3f-4e857a545d55.jpg[/img]
内容概要:本文档详细介绍了如何使用MATLAB实现粒子群优化算法(PSO)优化极限学习机(ELM)进行时间序列预测的项目实例。项目背景指出,PSO通过模拟鸟群觅食行为进行全局优化,ELM则以其快速训练和强泛化能力著称,但对初始参数敏感。结合两者,PSO-ELM模型能显著提升时间序列预测的准确性。项目目标包括提高预测精度、降低训练时间、处理复杂非线性问题、增强模型稳定性和鲁棒性,并推动智能化预测技术的发展。面对数据质量问题、参数优化困难、计算资源消耗、模型过拟合及非线性特征等挑战,项目采取了数据预处理、PSO优化、并行计算、交叉验证等解决方案。项目特点在于高效的优化策略、快速的训练过程、强大的非线性拟合能力和广泛的适用性。; 适合人群:对时间序列预测感兴趣的研究人员、数据科学家以及有一定编程基础并希望深入了解机器学习优化算法的工程师。; 使用场景及目标:①金融市场预测,如股票走势预测;②气象预报,提高天气预测的准确性;③交通流量预测,优化交通管理;④能源需求预测,确保能源供应稳定;⑤医疗健康预测,辅助公共卫生决策。; 其他说明:文档提供了详细的模型架构描述和MATLAB代码示例,涵盖数据预处理、PSO优化、ELM训练及模型评估等关键步骤,帮助读者全面理解和实践PSO-ELM模型。
N-甲基吡咯烷酮(NMP)是一种具有高极性、高沸点、低粘度、低挥发性、高热稳定性和化学稳定性的非质子溶剂。作为高性能溶剂,其广泛应用于锂离子电池制造、化工生产等多个领域。 NMP原料来源可分为合成NMP与再生NMP两类。合成NMP指通过化学合成工艺制得的NMP产品,其工业生产路线以γ-丁内酯(GBL)与单甲基胺为原料经缩合反应生成。再生NMP则指对使用后的NMP废液进行回收提纯 NMP废液特性: 高浓度NMP:废液中NMP含量较高,因NMP强溶解性可能混合多种有机物及无机物 低毒性但具刺激性:虽较其他有机溶剂毒性低,但高浓度接触仍对人体皮肤及眼睛产生刺激 处理难度大:因高沸点与强溶解性,单纯物理蒸发或自然挥发难以处理,需采用特定回收净化技术 严格环保要求:尤其在电池制造领域,NMP纯度要求极高,再生处理后的NMP纯度须达到同等标准,否则将影响产品质量与环境安全 NMP回收模式: 委托加工模式:回收企业为客户提供闭环循环服务,直接回收客户废液并提纯后返还。该模式可降低客户处理成本,实现资源循环利用 购销模式:回收企业采购上游供应商的NMP废液,经处理提纯后销售给下游客户,通过购销差价盈利 内部循环模式:大型企业集团自建回收处理设施,实现废液中NMP的内部循环利用。例如三菱重工在国内外建有溶剂回收装置,特别是随着全球锂电池需求增长,其海外工厂陆续采用现场回收设备,无需第三方处理即可实现NMP的直接回收提纯。 据QYResearch调研团队最新报告“全球NMP回收服务市场报告2025-2031”显示,预计2031年全球NMP回收服务市场规模将达到106万吨,未来几年年复合增长率CAGR为10.0%。
内容概要:本文档详细介绍了使用Visio绘制ER图的方法,首先阐述了ER图的三个基本要素:实体、属性、关系,并解释了Visio中没有现成模板的问题以及解决方案,即通过自定义模具的方式添加所需的图形元素。接着描述了绘制ER图的两种主要方式:手动绘制和利用Visio的反向工程技术。对于手动绘制,文中以留言板数据库为例,具体演示了从创建实体、设置属性到建立实体间关系的全过程。而对于反向工程,则强调了其高效性,支持多种数据库类型,如Access、MSSQL、Excel等,并给出了详细的步骤说明,包括设置反向工程参数、选择数据库路径、指定生成的表等关键环节。 适合人群:适合有一定数据库基础知识,尤其是正在学习或从事数据库设计工作的人员,包括但不限于数据库管理员、软件开发者、系统分析师等。 使用场景及目标:①帮助用户掌握Visio绘制ER图的基本技能,能够独立完成简单数据库的ER图设计;②利用Visio的反向工程功能快速生成复杂数据库的ER图,提高工作效率;③理解实体、属性、关系三者之间的逻辑关联,为后续数据库设计提供理论依据。 阅读建议:建议读者按照文档中的步骤逐步操作练习,同时结合实际项目需求,灵活运用所学知识,特别是对于反向工程部分,可以尝试不同类型的数据库以加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值