近期接到宁波的一个客户网站建设服务订单,该网站要求所有广告数据显示每天按一定量显示,按时间段显示不同的广告!
按客户的思路主要把握按时间显示的精髓!
思路分析:
1).定义一个开始时间 2).先把所有数据取出,每条广告显示需要多长时间,计算出显示完广告要的总时间? 3).程序和注释如下: <?php
//格式化时区 date_default_timezone_set('PRC');
//定义一个变量,为把所有数据展示完要的天数,先设定好值 $overdata=5;
//取总的数据 $sql="select * from `goods` order by `goods_id` desc"; $query=$db->query($sql); $jls=mysql_num_rows($query);//总的计录数
if(!$jls){echo "没有数据";}else{
//每天要展示的数量(有可能是小数) $mtjls=$jls/$overdata; //以小数点进行分隔 $xmh=explode('.',$mtjls); //取小数点前面的值 $mtjls=$xmh[0]; //初始日期:假如从这天开始循环 $ccrq="2012-05-21"; //第一次开始展示的日期转换成可运算的值 $kcrq=strtotime($ccrq); //今天的日期,并转换为可计算的值 $jtrq=strtotime(date('Y-m-d')); //过了几天(这样算出来是不带当天的值) $gljt=ceil(($jtrq-$kcrq)/3600/24); //过了几天+1才是真正的天数,因为要计算当天 $gljt=$gljt+1; //把过了几天除以一个周期所需要的天数,会得到循环了几次的值 $dd=($gljt-1)/$overdata; //把结果以小数点分隔 $gg=explode('.',$dd); //循环了几次的值 $gg=$gg[0]; //把循环了几次再乘以一个周期所需的天数 $wht=$gg*$overdata; /*$ccrq= date('Y-m-d', strtotime($ccrq."$wht"."day"));//重新付值给初始日期*/ //当前是循环在周期里第几天 $dqsdjt=$gljt-$wht; //在末到最后一天之前,从多少条记录开始取; $nb=$mtjls*($dqsdjt-1); //如果当前的是第几天小于设定的天数,数据取每天取数的平均值的总数 if($dqsdjt<$overdata){ $sql="SELECT * FROM `goods` WHERE `goods_pass`='1' and `goods_jgyes`='1' ORDER BY `goods_id` DESC limit $nb, $mtjls"; }else{//否则如果是最后一天,把没有展示的全部展示出来 //已展示多少条 $wjm=($overdata-1)*$mtjls; //还有多少条没有展示 $wjw=$jls-$wjm; //SQL取结果 $sql="SELECT * FROM `goods` WHERE `goods_pass`='1' and `goods_jgyes`='1' ORDER BY `goods_id` DESC LIMIT $wjm, $wjw"; } $query=$db->query($sql); while($row=$db->fetch_array($query)) { echo "<li>"; echo "<a href=\"view_goods.php?id=".$row['goods_id']."\">".sub_str($row["goods_cnname"],15)."</a>"; echo "</li>"; } } ?>
本文地址:http://www.eobo.cn/news/263.html
上一篇:
关于规范网站建设合同的通知
下一篇:
义乌网站建设为您总结使用PHP开发会员注册应该注意的问题
|