Календарь c несколькими событиями в один день на CodeIgniter (Calendar Multiple Events Per Day)
Частенько требуется организовать календарь с возможностью показа нескольких событий в один день. Посмотрим как это можно сделать на CodeIgniter.Календарь основывается на показанном в уроках nettuts календаре на CodeIgniter: Nettuts Codeignitter Calendar
Шаг 1) make sure the nettuts way of calendar work on you.
Шаг 2) copy the calendar.php from system/libraries to application/libraries
Шаг 3) make an adjustment in the calendar.php library in line 217 and put the code below (Thanks to member zoltano):
if (isset($data[$day]))
{
// Cells with content
$temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_content_today'] : $this->temp['cal_cell_content'];
if (is_array($data[$day]))
{
$several_events = '';
foreach ($data[$day] as $key)
{
$several_events .= $key.'<br />';
}
$out .= str_replace('{day}', $day, str_replace('{content}', $several_events, $temp));
}
// One event per day
else
{
$out .= str_replace('{day}', $day, str_replace('{content}', $data[$day], $temp));
}
}
else
{
// Cells with no content
$temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_no_content_today'] : $this->temp['cal_cell_no_content'];
$out .= str_replace('{day}', $day, $temp);
} Шаг 4) now on the calendar model you must make your output array. The code you must put on the get_calendar_data function of the model is shown below:
function get_calendar_data($year, $month)
{
$query = $this->db->query("SELECT DISTINCT DATE_FORMAT(date, '%Y-%m-%e') AS date
FROM calendar
WHERE date LIKE '$year-$month%' "); //date format eliminates zeros make
//days look 05 to 5
$cal_data = array();
foreach ($query->result() as $row) { //for every date fetch data
$a = array();
$i = 0;
$query2 = $this->db->query("SELECT data
FROM calendar
WHERE date LIKE DATE_FORMAT('$row->date', '%Y-%m-%d') ");
//date format change back the date format
//that fetched earlier
foreach ($query2->result() as $r) {
$a[$i] = $r->data; //make data array to put to specific date
$i++;
}
$cal_data[substr($row->date,8,2)] = $a;
}
return $cal_data;
}
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 CodeIgniter: Всплывающая форма обратной связи на Ajax в Bootstrap Modal и проверкой Captcha (18.02.2014)
- Как правильно обновить ExpressionEngine до последней версии 2.5.5 (05.02.2013)
- Team Sense: Доступна отправка сообщения/письма на email сотрудника. (18.01.2013)
- TeamSense: username (логин) в регистрации пользователя. Внедрили библиотеку DHTMLX в TeamSense. (11.01.2013)
- Team Sense: В календарь добавлена возможность указывать место проведения уроков (в офисе, на выезде) (12.12.2012)
- Team Sense: Многопользовательский календарь, заменяем радиокнопки на чекбоксы в выборе преподавателей. Массивы в Javascript. (06.12.2012)
- Team Sense: В календарь-расписание уроков добавлено разделение по преподавателям, которым присвоены свои цвета. (04.12.2012)
- CodeIgniter не передаёт $this->uri->segment(3) в функцию контроллера (передача переменной PHP->JavaScript->PHP) (28.11.2012)
- Воюем с форматом даты в JavaScript. Приведение формата даты в поле input в календаре системы TeamSense к более красивому виду. (18.11.2012)
- Team Sense: Теперь Email-оповещения в TODO можно отправлять как для руководителя задачи, так и для помощников. (21.09.2012)
- CodeIgniter и TeamSense: Делаем свой вид для страницы с ошибкой 404, настраиваем правильную отдачу статусов в HTTP headers (12.09.2012)
- Установка другого сайта (на CodeIgniter или Yii) в подпапку и чтобы поддомен ссылался на подпапку (25.08.2015)
- CodeIgniter: Подключение JS и CSS файлов там, где это нужно. (26.06.2012)
- Использование DISTINCT в SQL-запросах для исключения повторяющихся данных применительно к фреймворку CodeIgniter. (18.06.2012)
- CodeIgniter выдаёт ошибку: Cannot modify header information - headers already sent by (13.04.2012)
- CodeIgniter: Передаются пустые значения полей формы через $_POST если вводить русские символы. Форма не проходит валидацию. (17.08.2016)
- Обновление CodeIgniter с версии 2.0 (2.0.0) до версии 2.0.1 (23.01.2012)
- CodeIgniter: Показываем сообщения пользователю на его действия (19.11.2011)
- Настройка локальной и рабочей сред для разработки на CodeIgniter (2-й вариант) (22.01.2012)
- Календарь c несколькими событиями в один день на CodeIgniter (Calendar Multiple Events Per Day) (23.10.2011) ← вы тут
- Настройка локальной среды для разработки на CodeIgniter в Mac OSX, используя MAMP (22.01.2012)
- Обновление CodeIgniter с версии 2.0.1 до 2.0.2 (23.10.2011)
- CodeIgniter: Аутентификация на сайте с помощью библиотеки DX Auth (24.08.2011)
- Сравнение Yii с CodeIgniter (23.10.2011)
- CodeIgniter: Рассылка email по выбранным группам зарегистрированных пользователей и списку незарегистрированных пользователей (02.03.2013)