您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms实现动态价格实现方法代码示例
杨舟察2025-05-25phpcms教程已有人查阅
导读什么是动态价格(自命名)?--一般来说商品有个固定的价格,随着节假日或者促销活动可能会发生价格变化,结束后又恢复原价,如果每次价格变化都需要修改价格,那么不仅在时间上不好把握
什么是动态价格(自命名)?--一般来说商品有个固定的价格,随着节假日或者促销活动可能会发生价格变化,结束后又恢复原价,如果每次价格变化都需要修改价格,那么不仅在时间上不好把握,也需要消耗更多的人力。 为了适应这种情况,我们可以给价格在预期的时间段赋予一个新的价格,那么,动态价格就是--给未来的时间段设置一个新的价格,当这个时间到来的时候自动采用新的价格。
要点:
1.优先级:特定时间 > 节假日(不带年份) > 常规价格
2.如何读取数据
3.如何转为图表
效果图:
动态价格添加及列表
核心代码:
要点:
1.优先级:特定时间 > 节假日(不带年份) > 常规价格
2.如何读取数据
3.如何转为图表
效果图:
动态价格添加及列表
核心代码:
/**
* 获取动态价格节点数据
* @param type $pid
* @param type $qbdate
* @param type $qedate
* @return type
*/
public function get_data($pid,$qbdate="",$qedate="")
{
//查询时间容错
if($qbdate>$qedate){
$tmpdate=$qbdate;
$qbdate=$qedate;
$qedate=$tmpdate;
}
$today=mktime(0,0,0,date('m'),date('d'),date('Y'));
//is_date 是app functions global.funs.php中的自定义函数
if(empty($qbdate) || !is_date($qbdate)) $qbdate=strtotime("-60 days",$today);//默认查询开始年份
if(empty($qedate) || !is_date($qedate))$qedate=strtotime("+60 days",$today);
//获取景点信息
$this->table_name =$this->db_tablepre.'travel_scenic';
$pid = intval($pid);
if(!$pid) return false;
$r = $this->get_one(array('id'=>$pid));
$data['pid']=$r['id'];
$data['title']=$r['title'];
$data['price']=$r['price'];
$data['cost']=$r['cost'];
$data['qbdate']=$qbdate;
$data['qedate']=$qedate;
$days=ceil(abs($qbdate-$qedate)/86400);//查询开始日期与结束日期的天数
//给时间段内的数组赋初值(基本价格)
for($i=0;$i<=$days;$i++){
$the_day=strtotime("+".$i." days",$qbdate);
$y=intval(date('Y',$the_day));
$m=intval(date('m',$the_day));
$d=intval(date('d',$the_day));
$price_data[$y.'_'.$m.'_'.$d]=$data['price'];
$cost_data[$y.'_'.$m.'_'.$d]=$data['cost'];
$desc_data[$y.'_'.$m.'_'.$d]="";
}
//SQL查询准备
$qbyear=date('Y',$qbdate);
$qbmonth=date('m',$qbdate);
$qbday=date('d',$qbdate);
$qeyear=date('Y',$qedate);
$qemonth=date('m',$qedate);
$qeday=date('d',$qedate);
$this->table_name = 'travel_scenic_dynprice';
//此处用循环来解决跨年度查询的问题,每次查询一年的,然后合并;
for($qyear=$qbyear;$qyear<=$qeyear;$qyear++){
$this->query("select*,
DATE_FORMAT(concat(CASE byear WHEN 0 THEN '".$qyear."' ELSE byear END ,'-',bmonth,'-',bday),'%Y-%m-%d') as bdate,
DATE_FORMAT(concat(CASE eyear WHEN 0 THEN '".$qyear."' ELSE eyear END ,'-',emonth,'-',eday),'%Y-%m-%d') as edate
from phpcms_travel_scenic_dynprice
where pid=".$pid." and priority=1 and status=1
and DATE_FORMAT(concat(CASE byear WHEN 0 THEN '".$qyear."' ELSE byear END ,'-',bmonth,'-',bday),'%Y-%m-%d') >='".$qbyear."-".$qbmonth."-".$qbday."'
and DATE_FORMAT(concat(CASE eyear WHEN 0 THEN '".$qyear."' ELSE eyear END ,'-',emonth,'-',eday),'%Y-%m-%d')<='".$qeyear."-".$qemonth."-".$qeday."'
order by id asc");
$r2=$this->fetch_array();
foreach ($r2 as $key => $value) {
$tmp_bdate=strtotime($r2[$key]['bdate']);
$tmp_edate=strtotime($r2[$key]['edate']);
$days=ceil(abs($tmp_bdate-$tmp_edate)/86400);
//echo $days;
for($i=0;$i<=$days;$i++){
$the_day=strtotime("+".$i." days",$tmp_bdate);
$y=intval(date('Y',$the_day));
$m=intval(date('m',$the_day));
$d=intval(date('d',$the_day));
$price_data[$y.'_'.$m.'_'.$d]=$r2[$key]['dynprice'];
$cost_data[$y.'_'.$m.'_'.$d]=$r2[$key]['dyncost'];
$desc_data[$y.'_'.$m.'_'.$d]=$r2[$key]['description'];
}
}
//合并每年的数组
$price_data+=$price_data;
$cost_data+=$cost_data;
}
//print_r($price_data);
//此处针对特定时间的价格进行处理。
$this->query("select*,
DATE_FORMAT(concat(byear ,'-',bmonth,'-',bday),'%Y-%m-%d') as bdate,
DATE_FORMAT(concat(eyear,'-',emonth,'-',eday),'%Y-%m-%d') as edate
from phpcms_travel_scenic_dynprice
where pid=".$pid." and priority=2 and status=1
and DATE_FORMAT(concat(byear,'-',bmonth,'-',bday),'%Y-%m-%d') >='".$qbyear."-".$qbmonth."-".$qbday."'
and DATE_FORMAT(concat(eyear,'-',emonth,'-',eday),'%Y-%m-%d')<='".$qeyear."-".$qemonth."-".$qeday."'
order by id asc");
$r3=$this->fetch_array();
foreach ($r3 as $key => $value) {
$tmp_bdate=strtotime($r3[$key]['bdate']);
$tmp_edate=strtotime($r3[$key]['edate']);
$days=ceil(abs($tmp_bdate-$tmp_edate)/86400);
for($i=0;$i<=$days;$i++){
$the_day=strtotime("+".$i." days",$tmp_bdate);
//echo date("Y-m-d",$the_day)." ";
$y=intval(date('Y',$the_day));
$m=intval(date('m',$the_day));
$d=intval(date('d',$the_day));
$price_data[$y.'_'.$m.'_'.$d]=$r3[$key]['dynprice'];
$cost_data[$y.'_'.$m.'_'.$d]=$r3[$key]['dyncost'];
$desc_data[$y.'_'.$m.'_'.$d]=$r3[$key]['description'];
}
}
//去除price_data和cost_data连续都相同的节点
$i=1;
$count=count($price_data);
foreach ($price_data as $key => $value) {
if($i==1){
$first_node=$price_data[$key];
$first_node2=$cost_data[$key];
}
if($i!=1 && $i!=$count){
if($price_data[$key]==$first_node && $cost_data[$key]==$first_node2 ){
unset($price_data[$key]);
unset($cost_data[$key]);
unset($desc_data[$key]);
}else{
$first_node=$price_data[$key];
$first_node2=$cost_data[$key];
}
}
$i++;
}
$data['price_data']=$price_data;
$data['cost_data']=$cost_data;
$data['desc_data']=$desc_data;
//print_r($data);
return $data;
}
/**
* 根据数据生成chart所需的data数据
* @param type $data
* @return type
*/
public function get_chartdata($data)
{
$price_data=$data['price_data'];
$cost_data=$data['cost_data'];
$desc_data=$data['desc_data'];
$chartdata="[";
foreach ($price_data as $key => $value) {
$keys=explode("_",$key);
$chartdata.="[new Date(".$keys[0].", ".($keys[1]-1).", ".$keys[2]."), ".$price_data[$key].",'".$desc_data[$key]."'],";
}
$chartdata=rtrim($chartdata,',').']';
$chartdata2="[";
foreach ($cost_data as $key => $value) {
$keys=explode("_",$key);
$chartdata2.="[new Date(".$keys[0].", ".($keys[1]-1).", ".$keys[2]."), ".$cost_data[$key].",'".$desc_data[$key]."'],";
}
$chartdata2=rtrim($chartdata2,',').']';
return array('pid'=>$data['pid'],
'title'=>$data['title'],
'qbdate'=>$data['qbdate'],
'qedate'=>$data['qedate'],
'chartprice'=>$chartdata,
'chartcost'=>$chartdata2);
}
本文标签:
很赞哦! ()
相关教程
图文教程
phpcms找不到临时文件的解决方法
phpcms找不到临时文件的解决办法:首先找到并打开“php.ini”文件;然后找到内容“;upload_tmp_dir =”;接着输入临时文件夹的路径;最后删除该内容前面的分号
phpcms数据表分析介绍
表 1 : v9_admin 管理员表字段 类型 Null 默认 额外 注释表 2 : v9_admin_panel 快捷面板字段 类型 Null 默认 额外 注释
PHPCMSv9.5.6整合UEditer1.4.2的步骤方法
首先去UEditor官网下载所需对应版本:这里以1.4.2 PHP 版本,UTF-8版 为例=>1. 将所下载的程序包解压,得到程序包目录,将程序包目录更名为ueditor。
PHPCMS是用什么开发的?PHPCMS是ThinkPHP开发的吗
PHPCMS不是ThinkPHP开发的,可通过对比PHPCMS和ThinkPHP源码,可以出并没有使用ThinkPHP框架,并且PHPCMS官方并没有说明,该软件是基于ThinkPHP开发的。
相关源码
-
(自适应)品牌策划网络设计作品公司个人pbootcms网站源码下载本款基于PbootCMS开发的网站模板专为品牌策划、设计公司打造,特别适合展示创意作品、设计案例和企业服务。模板采用现代化设计风格查看源码 -
帝国cms自适应古诗词古籍名句网站整站带数据基于帝国CMS打造的专业古诗词文化网站模板,专注于古典文学内容的展示与传播。模板设计蕴含传统文化韵味,支持诗词鉴赏、名句赏析、古籍整理等特色功能,为诗词爱好者提供优质的在线阅读体验。查看源码 -
(自适应)橙色家政服务清洁保洁服务pbootcms网站模板源码下载模板核心价值:基于PbootCMS内核开发的家政服务类网站模板,通过模块化设计展现服务项目、团队风采、服务案例等核心板块,突出时效预约、服务标准化展示等家政行业特性。查看源码 -
(自适应响应式)家电维修清晰服务网站pbootcms模板免费下载本模板基于PbootCMS内核开发,为维修服务类企业打造,特别适合家电维修、设备维护等行业使用。通过简洁直观的界面设计,帮助企业快速搭建专业级服务平台,实现线上业务高效管理。查看源码 -
(自适应)物流运输快递仓储货运网站模板免费下载基于PbootCMS内核开发的物流运输行业专用模板,深度适配仓储货运企业的业务展示需求。前端采用响应式布局,自动适配手机端访问,后台数据实时同步更新,帮助企业高效展示运输网络、仓储设施、服务流程等核心业务模块。查看源码 -
(PC+WAP)蓝色公司注册财务会计公证律师网站源码下载本模板基于PbootCMS内核开发,为财务会计事务所、律师公证机构等专业服务机构打造。采用自适应设计,确保在各类设备上都能呈现专业视觉效果,帮助机构建立值得信赖的线上形象。查看源码
| 分享笔记 (共有 篇笔记) |
