ajax+php 旅游价格展示日历

前台页面

<div class="cal" data-url="<!--{$url_index}-->ajaxDate.php">
    <input type="hidden" name="cyear" value="<!--{$now_date.year}-->"/>
    <input type="hidden" name="cmonth" value="<!--{$now_date.month}-->"/>
    <div class="cal-head">
        <span class="head"></span>
        <span>周日</span>
        <span>周一</span>
        <span>周二</span>
        <span>周三</span>
        <span>周四</span>
        <span>周五</span>
        <span>周六</span>
     </div>
     <div class="cal-btn">
         <div class="cal-btn-prev"></div>
         <div class="cal-btn-date">
             <p class="y"><span><!--{$now_date.year}--></span>年</p>
             <p class="m"><span><!--{$now_date.month}--></span>月</p>
         </div>
         <div class="cal-btn-next"></div>
      </div>
      <div class="cal-content">
      </div>
</div>

css

/* 日历框样式 */
.cal{
    width: 650px;
    height: 350px;
    margin-top: 10px;
    display: flex;
    display: -webkit-flex; /* Safari */
    flex-wrap: wrap;
}
.cal-head {
    width: 650px;
    height: 38px;
    background: #0081cc;
    font-size: 17px;
    color: #ffffff;
    line-height: 36px;
    display: flex;
    display: -webkit-flex; /* Safari */
}
.cal-head span{
    width: 81px;
    height: 38px;
    text-align: center;
    display: block;
}
.cal-head span.head{
    width: 82px;
}
.cal-btn{
    width: 80px;
    height: 311px;
    background: #ffffff;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}
.cal-btn-prev{
    width: 80px;
    height: 51px;
    background: url('../images/cal-btn.png') no-repeat 0 0;
    cursor: pointer;
}
.cal-btn-date{
    width: 80px;
    height: 127px;
    text-align: center;
    font-size: 16px;
    padding-top: 82px;
}
.cal-btn-date p{
    color: #0080cc;;
}
.cal-btn-next{
    width: 80px;
    height: 51px;
    background: url('../images/cal-btn.png') no-repeat 0 -51px;
    cursor: pointer;
}
.cal-content{
    width: 568px;
    height: 312px;
    background: #ffffff;
    display: flex;
    display: -webkit-flex; /* Safari */
    flex-wrap: wrap;
}
.cal-detail-box{
    width: 68px;
    height: 45px;
    padding: 3px 6px;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    color: #a0a0a0;
    position: relative;
}
.cal-detail-box.active{
    color: #0080cc;
}
.cal-detail-box.active p{
    color: #ed6c00;
    font-size: 13px;
}
.cal-detail-box.active p span{
    font-size: 14px;
}
.cal-detail-box .price-detail{
    position: absolute;
    top: -1px;
    left: 73px;
    width: 200px;
    background: #fff;
    min-height: 45px;
    padding: 3px 6px;
    border: 1px solid #ccc;
    display: none;
    z-index: 10010;
}

js

<script>
function drawCal(year, month) {
    var id = '<!--{$product.id}-->';
    var mod = 'departure_time';
    var cyear = year;
    var cmonth = month;
    var post_url = $(".cal").data('url');
    $.ajax({
        url: post_url,
        type: 'POST',
        data: {
            id: id,
            cmonth: cmonth,
            cyear: cyear,
            action: mod
        },
        dataType: 'json',
        success: function (result) {
            if (result.status == 1) {
                $('input[name="cyear"]').val(result.data.year);
                $('input[name="cmonth"]').val(result.data.month);
                $('.cal-btn-date .y span').html(result.data.year);
                $('.cal-btn-date .m span').html(result.data.month);
                $('.cal-detail-box').remove();
                $('.cal-content').html(result.data.html);
            }
        }
    });
}
$(document).ready(function () {
   
    //日历框
    var cyear = $('input[name="cyear"]').val();
    var cmonth = $('input[name="cmonth"]').val();
    drawCal(cyear, cmonth);

    $('.cal-btn-prev').click(function () {
        var cyear = $('input[name="cyear"]').val();
        var cmonth = $('input[name="cmonth"]').val();
        if (cmonth == 1) {
            var nyear = parseInt(cyear) - 1;
            var nmonth = 12;
            drawCal(nyear, nmonth);
        } else {
            var nyear = parseInt(cyear);
            var nmonth = parseInt(cmonth) - 1;
            drawCal(nyear, nmonth);
        }
    });
    $('.cal-btn-next').click(function () {
        var cyear = $('input[name="cyear"]').val();
        var cmonth = $('input[name="cmonth"]').val();
        if (cmonth == 12) {
            var nyear = parseInt(cyear) + 1;
            var nmonth = 1;
            drawCal(nyear, nmonth);
        } else {
            var nyear = parseInt(cyear);
            var nmonth = parseInt(cmonth) + 1;
            drawCal(nyear, nmonth);
        }
    });

    // 详细价格
    $('.cal-content').on('mouseover', '.cal-detail-box.active', function () {
        $(this).find('.price-detail').show();
    });
    $('.cal-content').on('mouseout', '.cal-detail-box.active', function () {
        $(this).find('.price-detail').hide();
    });

    // 滑动栏
    $('.detial-box-nav a').click(function () {
        $(this).parent().find('a').removeClass('active');
        $(this).addClass('active');
    });
});
</script>

ajaxDate.php

<?php 
if ($action == "departure_time") {

    $year = $_POST["cyear"]; //当前年份
    $month = $_POST["cmonth"]; //当前月份
    $id =  $_POST["id"]; //当前项目id

    //获得该月的第一天所在星期中的第几天,数字表示0(表示星期天)到6(表示星期六)。
    $date['start_week'] = date('w', mktime(0,0,0,$month,1,$year));
        //获得该月的总天数。
    $date['days']= date("t",mktime(0,0,0,$month,1,$year));
    $now_date = date('d');
    $html = '';

    $sql = "SELECT * FROM schedule WHERE pid = {$id} AND flag = 1 AND year = '{$year}' AND month = '{$month}'";
    $res = $db->getall($sql);

    $res_arr = array();
    if (!empty($res)) {
        foreach ($res as $key=>$value) {
            $res_arr[$value['day']] = $value;
        }
    }
    
    for ($i=0;$i<$date['start_week'];$i++) {
        $html .= '<div class="cal-detail-box"></div>';
    }
    for ($d=1;$d<=$date['days'];$d++) {
        if (!empty($res_arr[$d])) {
            $html .= "<div class='cal-detail-box active'>".$d."<p>¥<span>".$res_arr[$d]['price']."</span></p><div class='price-detail'><p>成人价:".$res_arr[$d]['price']."</p>";
            if ($res_arr[$d]['child_price'] > 0) {
                $html .= "<p>儿童价:".$res_arr[$d]['child_price']."</p>";
            } 
            $html .= "</div></div>";
        } else {
            $html .= "<div class='cal-detail-box'>".$d."</div>";
        }
    }

    $end_date = $date['days']+$date['start_week'];

    for ($j=$end_date; $j<42; $j++) {
        $html .= '<div class="cal-detail-box"></div>';
    }

    $array['data'] = array();
    $array['info'] =  0;
    $array['status'] = 1;
    $array['data']['year'] = $year;
    $array['data']['month'] = $month;
    $array['data']['html'] = $html;
    
    echo json_encode($array);die;
}

最终效果:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容