2

私はフルカレンダーを使用していますが、終日のイベントであるイベントがいくつかあります。一般的に、私のphpはすべてを設定します'allDay' => 'false'。時間を指定しないと時間が追加されることに気づきました。

trueを指定しない限り、すべての値に対してすべてのデフォルトをfalseに設定したいと思います。

私のPHPフェッチは次のとおりです。

$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`,
   `allDay` FROM calender WHERE length('column') > '0'";

$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row){
    $return[]=array('id'=>$row['id'],
                'title'=>$row['title'],
                "allDay" =>$row['allDay'],
                'start'=>$row['start'].' '.$row['time'],
                'end'=>$row['end'],
                'url'=>$row['url'],
                'backgroundColor'=>$row['backgroundColor'],
                'textColor'=>$row['textColor'],
                'className' =>$row['className']);
}
$dbh = null;

header('Content-type: application/json');
echo json_encode($return);

jQuery関数は次のとおりです。

$(document).ready(function() {
    $('#calendar').fullCalendar({
    editable: false,
    events: "json-events.php", 
    eventDrop: function(event, delta) {
            alert(event.title + ' was moved ' + delta + ' days\n' +
                '(You cannot update these fields!)');
        },
        loading: function(bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        },
    });
});

どこに値を追加するのかわかりません。mySQLに「allDay」をtrue/falseとして格納していますが、文字列として返されます。だから私は実際にjsonがファイルをエンコードする前にそれをカバーする方法を知っています。または、データの確認後にjQuery/javascriptで変更します。

4

3 に答える 3

2

MySQLのallDayフィールドはどのタイプですか?の場合enum('true', 'false')、それはおそらくあなたの問題です。それは文字列に変換されます。私は人々にこれをしてもらいました、そして私がブール(またはint)であると思ったものが文字列である理由を理解するのに私は永遠にかかりました。

データベースを再確認し、データベースを作成して、tinyint(1)falseの場合は0、trueの場合は1を使用してみてください。PHPのブール値trueおよびfalseは対応する整数にキャストされ、JavaScriptで0/1を使用しても問題はありません。

于 2012-04-18T20:49:25.083 に答える
0

これを試して:

foreach ($result as $row){
    $return[]=array('id'=>$row['id'],
                'title'=>$row['title'],
                "allDay" =>$row['allDay'] == "true",
                'start'=>$row['start'].' '.$row['time'],
                'end'=>$row['end'],
                'url'=>$row['url'],
                'backgroundColor'=>$row['backgroundColor'],
                'textColor'=>$row['textColor'],
                'className' =>$row['className']);
}
$dbh = null;
于 2012-04-18T20:52:05.013 に答える
0

あなたもこれを試すことができます:

$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`, IF(`allDay` = 'true',true,false) AS allDay  FROM calender WHERE length('column') > '0'";
于 2012-11-30T13:25:56.040 に答える