2

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){

        }
    });

これは、ページがロードされたときにうまく機能しますが、議題を変更した後 (たとえば、次または前のボタンを押す)、毎年の誕生日がカレンダーに表示されるようにしたいと考えています。この目的のために、 viewDisplayand renderEventfunctions を使用することをお勧めしましたが、年変数をphpでもjavascriptでも変更できません。関数内のviewDisplay変数iは年の数値です (2012 など)。Date("Y") 私の問題は、何らかの形でivariable をrenderEventfunctionに更新することです。また、取得した情報を次のように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。みんな、私がやろうとしていることを理解していると思います。それを行う方法を教えてください。事前にどうもありがとう:)

4

1 に答える 1

4

最も簡単な解決策は、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]
        );
    }
}

2 つの欠点:

  • 異なる誕生日を管理することはできません (そのため、死亡した後でも、その人の生年月日が発生する可能性があります)。
  • それは指数関数的なコストにつながります

また、フロントエンド ソリューションを構築するためのイベントを繰り返すデモをご覧になることもできます。

于 2012-09-07T07:54:05.540 に答える