2009-11-03 111 views
11

我想将jQuery fullcalendar整合到我的PHP网站中,但我不知道如何处理该事件以及如何使用MySQL中的JSON数据。将jQuery fullcalendar集成到PHP网站

任何意见,将不胜感激。

+0

这是你指的这个日历吗? http://www.redredred.com.au/projects/jquery-week-calendar/ – elzapp 2009-11-03 09:14:23

+0

如果真的很紧急,你应该尝试IRC频道http://blog.jquery.com/2007/02/17/the- jquery-irc-channel/... – chakrit 2009-11-03 09:21:26

+11

为什么我们会在乎任务是否紧急?对我来说,这通常是回答这个问题的原因。如果您需要快速完成某些工作,请找到一些有偿支持。 – Duroth 2009-11-03 09:23:56

回答

14

确保您的PHP可以输出的F ollowing HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
        "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 

    <script> 
    $(document).ready(function(){ 
    $('#example').calendar(); 
    }); 
    </script> 

</head> 
<body> 
    <link rel="stylesheet" href="http://dev.jquery.com/view/trunk/themes/flora/flora.all.css" type="text/css" media="screen" title="Flora (Default)"> 
<script src="http://dev.jquery.com/view/trunk/plugins/calendar/jquery-calendar.js"></script> 
<input type="text" id="example" value="Click inside me to see a calendar" style="width:300px;"/> 
</body> 
</html> 

这里是a sample你如何能做到这一点,通过使用json_encode:

$(document).ready(function() { 

     $('#calendar').fullCalendar({ 
     draggable: true, 
     events: "json_events.php", 
     eventDrop: function(event, delta) { 
      alert(event.title + ' was moved ' + delta + ' days\n' + 
       '(should probably update your database)'); 
     }, 
     loading: function(bool) { 
      if (bool) $('#loading').show(); 
      else $('#loading').hide(); 
     } 
     }); 

    }); 

而这里的PHP代码:

<?php 

    $year = date('Y'); 
    $month = date('m'); 

    echo json_encode(array( 

     array( 
     'id' => 1, 
     'title' => "Event1", 
     'start' => "$year-$month-10", 
     'url' => "http://yahoo.com/" 
    ), 

     array( 
     'id' => 2, 
     'title' => "Event2", 
     'start' => "$year-$month-20", 
     'end' => "$year-$month-22", 
     'url' => "http://yahoo.com/" 
    ) 

    )); 

?> 
+1

非常感谢您的评论。但我认为你有一些误解,或者我没有很清楚地描述它。 我想添加jquery weekcalendar插件,并有一个示例。一切都在那里。但我想使它与MySQL数据库一起工作。 非常感谢!!!!!!! – 2009-11-03 09:29:40

+0

取决于服务器确保你有'date_default_timezone_set('America/YOUR_TZ');'在日期(XXX)'之前'呼叫 – roberthuttinger 2012-10-16 20:11:02

0

我不熟悉jquery。但我认为问题是你没有考虑到Ajax的异步性质。

除非fullCalendar()做了一些非常奇怪的事情(触发Ajax请求并等待响应),那么您将无法以该方式在​​函数中使用外部源,因为fullCalendar将完成运行从服务器返回响应的时间。

似乎没有一个清楚的例子,你在星期日历网页上试图做什么,但我确定你需要的是创建没有事件的日历,但是定义了一个回调事件;然后以某种方式解除外部电话。

+0

感谢您的发布。你有点表示我的问题。实际上,我无法添加/编辑/删除事件,也无法以json的方式从mysql获取数据。我会尽量安排和解决它。谢谢。 – 2009-11-03 14:30:15

0

我觉得你有和我一样的问题。我在网上搜索了解如何设置DateTime,以便fullCalendar JavaScript将正确解释它。 (这个页面有一些很好的线索:http://blog.stevenlevithan.com/archives/date-time-format)。

我发布在fullCalendar问题页面上,希望创作者或任何其他人都能对这个主题有所了解。

==================== ISSUE说明====================

哪些步骤将重现该问题?

  1. 使用JSON
  2. 使用取此事件的JSON字符串:

 

[{"id":2, "title":"title of 2","start":"2009-11-17T10:00:00" ,"end":"2009-11-17T11:01:00","url":"?eventID=2"}] 

什么是预期的输出?你看到了什么呢?

  • 我认为这个事件会在日历中显示,开始时间为 10:00,结束时间为11:01。
  • 它显示为一整天的事件。

您使用的是什么版本的产品?在什么操作系统上?

  • FullCalendar v1.4。1
  • 的Windows XP

请在下面提供任何其他信息。

我正在使用aspx页面来获取日历事件。我的猜测是, 我在JSON中返回的JavaScript DateTime对象 的格式有问题,并且这导致fullcalendar至 将事件解释为fullDayEvents。我在 JSON中发送的格式是:2009-11-17T11:01:00

3

我有同样的问题,只是发现如何使它工作。 下面是你应该在你的PHP文件中使用的代码:

$query = "select * from events where accountNo = '$accountNo'"; 
$res = mysql_query($query) or die(mysql_error()); 
$events = array(); 
while ($row = mysql_fetch_assoc($res)) { 
    $start = "2010-01-08T08:30"";//Here you have to format data from DB like this. 
    $end = "2010-01-08T08:30";//This format works fine 
    $title = $row['firstName']." ".$row['lastName']; 
    $eventsArray['id'] = $row['id']; 
    $eventsArray['title'] = $title; 
    $eventsArray['start'] = $start; 
    $eventsArray['end'] = $end; 
    $eventsArray['allDay'] = ""; 
    $events[] = $eventsArray; 
} 


echo json_encode($events); 

我希望它能帮助:)。

9

“2010-02-11 11:00:00”格式可以很好地为我指定时间(里面没有“T”), 解决方案的关键是将事件的“allDay”属性设置为空字符串。

+0

噢谢谢伙计它救了我 – chhameed 2013-01-08 12:46:38

0

嘿,我没有使用你的代码之上,但在json_events.php默认的,有 “[”在PHP输出的开始“]”就结束

0

这个例子的工作原理:

$sql= "SELECT id, title, start, DATE_FORMAT(start, '%Y-%m-%dT%H:%i') AS startDate 
FROM kalender 
ORDER BY startDate DESC"; 
$res = mysql_db_query($db, $sql, $conn) or die(mysql_error()); 

$events = array(); 
//important ! $start = "2010-05-10T08:30"; iso8601 format !! 
while ($row = mysql_fetch_assoc($res)) { 
    $eventArray['id'] = $row['id']; 
    $eventArray['title'] = $row['title']; 
    $eventArray['start'] = $row['startDate']; 
    $events[] = $eventArray; 
} 
echo json_encode($events); 
1

输出呼应的事件应该是这种格式:

$('#calendar').fullCalendar({ 
    events: [{ 
    title: 'Awesome Event Title', 
    start: new Date($start_year, $start_month, $start_day),  or end: new Date(y, m, d), 
    end: new Date($end_year, $end_month, $end_day) or end: new Date(y, m, d) 
    }] 
}); 
1

实现这种方式,它工作正常

$result = mysql_query("SELECT * FROM eventoform",$conexion); 
     $array = array(); 
     $i = 0; 
     while ($row = mysql_fetch_array($result)) { 
      $array[$i]=array("id"=>$row["id_evento"],"title"=>$row["NombreEvento"],"start"=>$row["FechaInicio"]." ".$row["HoraInicio"],"allDay"=>false,"description"=>$row["description"],"editable"=>true); 
      $i++; 
     } 

echo json_encode($array); 
3

在PHP - JSON:

$eventsArray['allDay'] = "false"; //doesn't work 

$eventsArray['allDay'] = false; //did the trick to have a NON FULL DAY correctly rendered!! 
0

以防万一有一个人使用导轨与JBuilder中生成JSON提要...你必须添加阿迪属性 ...

json.array!(@resubmissions) do |object| 
    json.id object.id 
    json.title "WVL - #{object.to_s}" 
    json.start object.resubmission_at.to_i 
    json.allDay false 
end 

然而,由于对PHP的解决方案!