2009-11-03 9 views
11

Я хотел бы интегрировать полный календар jQuery в свой PHP-сайт, но я не знаю, как обрабатывать событие и как использовать данные JSON из MySQL.Интеграция jQuery fullcalendar в PHP-сайт

Любые советы будут оценены.

+0

Это каландр, о котором вы говорите? http://www.redredred.com.au/projects/jquery-week-calendar/ – elzapp

+0

Если это действительно актуально, вы должны попробовать канал IRC http://blog.jquery.com/2007/02/17/the- jquery-irc-channel/... – chakrit

+11

Почему нам все равно, если задача срочна? Для меня это обычно причина * не *, чтобы ответить на вопрос. Если вам нужно что-то сделать быстро, найдите себе платную поддержку. – Duroth

ответ

14

Убедитесь, что PHP может выводить е 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. Большое спасибо !!!!!!! –

+0

в зависимости от сервера убедитесь, что у вас есть 'date_default_timezone_set ('America/YOUR_TZ');' перед 'date (XXX)' call – roberthuttinger

0

Я не знаком с jquery. Но I думаю, проблема в том, что вы не учитываете асинхронный характер Ajax.

Если fullCalendar() делает что-то очень странное (срабатывает запрос Ajax и ждет ответа), то вы не сможете использовать внешний источник в функции таким образом, потому что fullCalendar будет завершен время ответа возвращается с сервера.

Непонятный пример того, что вы пытаетесь сделать на веб-странице календаря недели, но я уверен, что вам нужно создать календарь без событий, но с обратным вызовом, определенным для добавления Мероприятия; а затем каким-то образом погасить внешний вызов.

+0

Спасибо за сообщение. Вы как бы указали мою проблему. На самом деле, я не могу добавлять/редактировать/удалять события и не могу захватить данные из mysql на пути json. Я постараюсь его устроить и решить. И спасибо. –

0

Я думаю, что у вас такая же проблема, как у меня. Я ищу в Интернете, пытаясь выяснить, как настроить DateTime так, чтобы jQuery fullCalendar правильно интерпретировал его. (На этой странице были некоторые подсказки: http://blog.stevenlevithan.com/archives/date-time-format).

Я разместил это на странице проблем с полным календарем, надеясь, что создатель или кто-то еще прольет свет на эту тему.

==================== НОМЕР ОПИСАНИЕ ====================

Какие шаги воспроизведут проблему?

  1. Fetch события с помощью 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 для извлечения событий календаря. Я думаю, что есть что-то не так с форматом объекта JavaScript DateTime, что я возвращаюсь в JSON и что это является причиной 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» отлично подходит для указания времени для меня (без «Т» внутри), ключом решения является установка атрибута «allDay» события пустая строка.

+0

Ooh Спасибо Dude it save's me – chhameed

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 ... Вы должны добавить AllDay атрибут ...

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 решение!