您现在的位置是:首页 > 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数据表分析介绍
表 1 : v9_admin 管理员表字段 类型 Null 默认 额外 注释表 2 : v9_admin_panel 快捷面板字段 类型 Null 默认 额外 注释
PHPCMSV9点击量排行调用方法
另外我们还需要修改phpcms里模型代码以适用其上面的调用标签,打开 phpcms\modules\content\classes\content_tag.class.php 文件,在里面添加一个函数,
phpcms源码解析模板引擎
简介:这是phpcms 源码解析模板引擎的详细页面,介绍了和php,phpcms, php phpcms源码解析模板引擎有关的知识、技巧、经验,和一些php源码等。
phpcms分页用法简介代码示例
PHPCMS分页的用法前面需要有引用的list,代码如下:注意上面有page属性。这个代码可以在phpcms后台生成,详见界面->标签向导
相关源码
-
(PC+WAP)门窗门业家居定制铝合金产品pbootcms模板下载基于PbootCMS内核开发的门窗门业企业专用模板,采用响应式设计结构,数据一次录入即可同步适配电脑与手机端浏览。通过简洁大气的视觉呈现,帮助门窗企业快速建立专业线上展示平台,有效传递产品价值与服务优势。查看源码 -
(自适应响应式)html5蓝色智能水表营销型网站pbootcms模板下载PbootCMS内核开发,为智能水表企业打造的营销型网站解决方案,本模板基于PbootCMS内核开发,为智能水表及相关行业企业设计,采用HTML5+CSS3技术构建,具有响应式布局。查看源码 -
(PC+WAP)绿色资源回收新能源环保设备pbootcms源码下载基于PbootCMS系统深度开发的环保行业模板,特别适配资源回收设备、新能源技术、环境治理装备等企业的线上展示需求。集成产品库、解决方案、环保案例等专业模块,助力企业高效传递绿色价值。查看源码 -
(自适应响应式)英文外贸汽车零配件五金机械网站模板为汽车零部件制造商与五金机械出口企业打造的响应式网站模板,内置多语言切换功能,支持产品参数表、OEM能力展示等外贸场景需求。通过结构化数据展示帮助海外买家快速理解产品规格。查看源码 -
(自适应响应式)宠物经验资讯咨询博客pbootcms网站源码下载除宠物资讯领域外,通过内容替换可快速适配宠物用品商城、宠物医疗咨询平台、宠物训练教程网站、动物保护组织官网、水族爱好者社区等垂直领域。查看源码 -
(带手机版)绿色生态农业种植农产品网站pbootcms源码下载本模板基于PbootCMS内核开发,为生态农业企业量身打造,适用于农业种植、有机农场、农产品电商等业务场景。模板设计充分体现绿色环保理念,突出农业特色,同时保持简洁大气的视觉效果,帮助农业企业建立专业形象。查看源码
| 分享笔记 (共有 篇笔记) |
