0

mysqlデータベースからjsonのイベントを表示したい。しかし、カレンダーに表示できません。イベントにはいくつかの間違いがあると思います。しかし、私はそれを指摘することはできません。

これが私のコードです:

calendar.php:

 $(document).ready(function() {

  var date = new Date();
  var d = date.getDate();
  var m = date.getMonth();
  var y = date.getFullYear();

  $('#calendar').fullCalendar({
   theme: true,
   draggable: true,
   header: {
    left: 'prev,next today',
    center: 'title',
    right: 'month,agendaWeek,agendaDay'
   },
   editable: true,
   /*events: "json_events.php",*/
   events: function(start, end, callback){
    $.getJSON("json_events.php", 
     {
      start: start.getTime(),
      end: end.getTime()
     },
     function(result){
      for(var i=0; i<result.length; i++){
       var row = result[i];
      }
      //format the result into an array of calevents
      $('#calendar').fullCalendar('addEvent', {id:row[0], title:row[1], start:row[2], end:row[3]} );
      //then pass the calevent array to the callback
      callback(calevents);
     }
    );
   },
   eventClick: function(event){
    editEventShow(event);

   },
   eventDrop: function(event, daydelta, minutedelta) {
    alert(event.title + ' was moved ' + daydelta + ' days\n' + minutedelta + ' minutes\n'+
     '(should probably update your database)');

   },
   dayClick: function(dayDate){
    /*$('#dialog').dialog('open');
    var date, month, year;
    date  = dayDate.getDate();
    month = dayDate.getMonth()+1;
    year = dayDate.getFullYear();
    dayDate = year + "-" + month + "-" + date;*/
    addEventShow(dayDate, this);

   },
   loading: function(bool) {
    if (bool) $('#loading').show();
    else $('#loading').hide();
   },

 });
    });
    </script>
    <style type='text/css'>

 body {
  margin-top: 40px;
  text-align: center;
  font-size: 13px;
  font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
  }

 #calendar {
  width: 900px;
  margin: 0 auto;
  }

</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>

json_events.php:

 <?php 
  require("../../../connect/config.php"); 

  $link = mysql_connect("$server","$user","$password") or die(mysql_error());
  mysql_select_db($db);
  $query = "SELECT id,title,start, end FROM events";
  $result = mysql_query($query) or die(mysql_error());
  $arr = array();
  while($row = mysql_fetch_assoc($result)){
    $arr[] = $row; 
  }
  echo json_encode($arr); 
 ?>

問題について私を助けてもらえますか??

ありがとう。

4

2 に答える 2

0

編集:(新しい答え)

  for(var i=0; i<result.length; i++){
   var row = result[i];
  }

row上記のループの式は、ループの各反復で上書きされます。したがって、後でrow [0]、row [1]などを呼び出すとき、最後のresult [i]が実際に配列でない限り、実際には配列を取得していません(その場合は、ループは不要です)

私はあなたに100%の答えを与えることはできませんが、それはあなたを正しい方向に導くはずです。

更新:私は少し難しく見えました、そしてあなたが線を動かす必要があるように見えます:

$('#calendar').fullCalendar('addEvent', {id:row[0], title:row[1], start:row[2], end:row[3]} );

forループの内側。

于 2009-11-04T20:01:36.577 に答える
0

すでに CalEvent フォームにある JSON を提供している場合は、必要な情報でフォーマットされた JSON 文字列を返す URL を提供するだけで済みます。コメントアウトされているように、それを cal イベントに変換する関数は必要ありません。ライン。

JSONLintは、正しい JSON があるかどうかを判断するのに役立ちます。あなたが探しているのは、次のようなものです。

[
    {
      id: row[0],
      title: row[1],
      start: row[2],
      end: row[3]
    },
    {
      ... // next event
    },
]

json_event.php から返される文字列として。

于 2010-01-15T17:33:56.070 に答える