每年将生日事件添加到 jQuery 完整日历中

Posted

技术标签:

【中文标题】每年将生日事件添加到 jQuery 完整日历中【英文标题】:add birthday events into jQuery full calendar each year 【发布时间】:2012-08-31 15:26:38 【问题描述】:

我正在尝试将完整的日历事件数据插入jQuery,在这种情况下,它代表用户的生日。我正在从mysql 数据库中检索生日。我们来看看脚本

php:

if ($birthday_r = $connection->query("SELECT CONCAT(name,' ',surname),MONTH(birthday),DAY(birthday) FROM users"))
    while ($birthday_row = $birthday_r->fetch_row())
        $birthday_array[] = array(
        'title' => $birthday_row[0],
        'start' => Date("Y") . "-" . $birthday_row[1] . "-" . $birthday_row[2]
        );
    
    $json = json_encode($birthday_array);
    birthday_r->free();

那么您如何看待将此 json 编码信息存储到 $json 变量中

javascript:

jQuery("#calendar").fullCalendar( // initialize full calendar
        header: 
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        ,
        <?php if (isset($json_encode))echo "events: " . $json . ","; ?>
        viewDisplay: function(view)
            var i = view.title.slice(-4);
        ,
        renderEvent: function(event)

        
    );

页面加载时效果很好,但我希望在更改议程后(例如按下一个或上一个按钮),每年的生日都会显示在日历中。为此,我建议使用 viewDisplayrenderEvent 函数,但我不能在 php 中以及在 javascript 中修改 year 变量。在viewDisplay 函数变量i 是年份的数值(如2012)。我的问题是以某种方式将 Date("Y")i 变量更新为 renderEvent 函数。我还尝试将检索到的信息存储到 javascript 变量中,就像这样 =>

在这个例子中认为是在 php 中给出的

'start' => $birthday_row[1] . "-" . $birthday_row[2] // php

// below JavaScript code
var json_obj = <?php if (isset($birthday_array))echo $birthday_array; ?>

var d = new Date();

for (var i=0;i<json_obj.length;i++)
    json_obj[i] = d.getFullYear() + "-" + json_obj[i];
 // this scripts works as well but I can not manipulate after prev or next buttons are pressed on calendar

PS。我想伙计们,了解我想要做什么,请帮助我如何做到这一点。提前非常感谢:)

【问题讨论】:

也许我错过了什么。您希望这些事件如何显示在日历上?它与有开始日期的常规活动不同吗?你能再解释一下吗? 【参考方案1】:

最简单的解决方案可能是更改您的 PHP 循环并为您的事件添加“多个”年份。

while ($birthday_row = $birthday_r->fetch_row())
    $yearBegin = date("Y");
    $yearEnd = $yearBegin + 10; // edit for your needs
    $years = range($yearBegin, $yearEnd, 1);

    foreach($years as $year)
        $birthday_array[] = array(
            'title' => $birthday_row[0],
            'start' => $year . "-" . $birthday_row[1] . "-" . $birthday_row[2]
        );
    

两个缺点:

您无法管理不同的生日(因此一个人的生日可能会出现,即使在他死后也是如此) 它会导致成倍的成本

您还可以查看 demo 与重复事件以构建前端解决方案。

【讨论】:

以上是关于每年将生日事件添加到 jQuery 完整日历中的主要内容,如果未能解决你的问题,请参考以下文章

JQuery完整日历,如何更改视图

通过ajax调用的Jquery完整日历事件

Jquery完整日历json事件源语法

Android 创建日历事件总是作为生日

jquery完整日历:为前端的每个事件设置不同的颜色

将事件添加到从服务器FullCalendar返回的事件数组中