PHP скрипт: ToDo с картинками

13 августа, 2009
simple tasks

Уделяете ли вы внимание организации своей работы?
Много ли у вас "мелких" дел, о которых вы регулярно забываете?

Вроде бы простые вопросы, но для многих людей (и я не исключение) организация работы – это актуальная проблема.

Хуже всего, когда нужно сделать много «мелких» дел, которые не занимают много времени, но обязательно должны быть выполнены вовремя… и держать в голове их все просто невозможно.

Естественно, разработчики реагируют на потребности рынка, и на сегодняшний день создано множество программ-органайзеров, различных напоминалок и т.п.
Примеры создания ToDo списков часто приводят в учебниках по программированию.

Я решил не оставаться в стороне и сделал собственный вариант такого ToDo списка, естественно, с некоторыми дополнительными возможностями.

Кстати, скрипт называется SimpleTasks.

Главная особенность – возможность указывать состояние выполнения задач. При этом используется специальная система обозначений.
Читать дальше »

Опубликовано в Ajax, CodeIgniter, CSS, htaccess, HTML, JavaScript, MySQL, PHP, Web разработка | Комментарии (135) »

Phing: backup и сохранение в Subversion базы данных

29 июня, 2009
phing mysql subversion

В этой заметке я хочу показать несложный пример использования Phing для создания резервных копий базы данных (MySQL) и их отправки в репозиторий Subversion.

Ни для одной из этих операций готовых задач для Phing я не нашел. Но, если подумать, они и не очень нужны. Ведь с помощью Phing можно выполнить любую команду. Т.е. если вы знаете как решить задачу с помощью консоли, значит вы можете автоматизировать решение с помощью Phing.

Примечание. Если вы слышите слово Phing впервые, то, думаю, вам будет интересно почитать статью Программирование на PHP. Избавляемся от рутинных операций с помощью Phing, а может быть и весь раздел Phing этого блога ;)

Возвращаемся к нашей задаче.

Для создания резервной копии базы можно использовать утилиту mysqldump. В её параметрах нужно указать имя пользователя базы, его пароль и название базы. Дополнительно нужно задать имя файла в который мы сохраняем дамп.

Например, так
Читать дальше »

Опубликовано в MySQL, Phing, Subversion | Комментарии (66) »

Откат базы данных и проблема с кодировками

23 июня, 2009
db_restore

Сегодня я хочу рассказать об одних граблях на которые сам недавно наступил.

Даже немного стыдно признаваться, но я столкнулся с проблемой кодировок в базе данных и какое-то время вообще не мог понять, в чём дело.

А ситуация была такая. Я написал статью «jqGrid: редактирование табличных данных с помощью inline редакторов» и сделал демонстрационную страничку.

Для того, чтобы таблица не была пустой, я сделал дамп моей локальной базы и через phpMyAdmin залил его в базу на сервере.

При этом никаких проблем с кодировками не возникало вообще. Т.е. у меня везде была указана utf-8, она и использовалась.

Тут возникает обычная проблема.
Читать дальше »

Опубликовано в MySQL | Комментарии (31) »

jqGrid: редактирование табличных данных с помощью inline редакторов

13 июня, 2009
jqgrid

В одной из прошлых статей (jQuery Grid Plugin – "продвинутое" решение для создания таблиц) я рассказывал об использовании jqGrid для создания таблиц.

jqGrid представляет собой плагин к библиотеке jQuery предназначенный для работы с таблицами. С его помощью можно создавать многостраничные таблицы, выполнять сортировку и, конечно, редактировать данные.

В прошлой статье речь шла только о самых простых возможностях и, как справедливо заметили в комментариях, о самой интересной части, редактировании, не было ничего сказано. Я пообещал это исправить и сегодня постараюсь это обещание выполнить.

Прежде всего, напомню, что данные хранятся на стороне сервера (в базе данных) и плагин к ним непосредственного доступа не имеет. Он может только вызвать серверный (PHP) скрипт и передать ему новые значения.

Редактировать записи в таблице можно 2 способами.
Читать дальше »

Опубликовано в Ajax, JavaScript, MySQL, PHP, Web разработка | Комментарии (283) »

WampServer: как я обновлял MySQL

5 июня, 2009
mysql_config

Эта история началась с того, что на днях я решил обновить софт для web разработки (apache + php + mysql). И для этого скачал последнюю версию wampserver'а.

Примечание. Почитать об этом дистрибутиве для web разработки можно в статье Инструменты web разработчика. WAMPSERVER 2 – только новый софт.

В принципе, отличия в номерах версий серверов были не большие и я думал, что никаких проблем не возникнет. Но, как оказалось, я ошибся. Серьезных проблем, конечно, не было, но "поиграться" с конфигами пришлось.
Читать дальше »

Опубликовано в MySQL, Web разработка | Комментарии (4) »

Создаём виджет для хранения заметок. Часть 1.

27 мая, 2009
notes widget

Приветствую всех!

В этой статье я хочу показать пример создания собственного виджета, с помощью которого можно будет создавать короткие заметки и просматривать их. Виджет будет свободно перемещаться по странице и, конечно, будет возможность редактировать и удалять заметки.

Код виджета не сложный, но требует использования сразу нескольких технологий: PHP и MySQL на стороне сервера, HTML, CSS, JavaScript – на стороне клиента, поэтому я разбил статью на 2 части. В первой мы рассмотрим серверную часть кода, во второй – клиентскую.

Чтобы лучше понять, что мы получим в результате, взгляните на демонстрационную страничку

демонстрационный пример

Если задача ясна, приступим к делу.

Начнем с базы данных.
Читать дальше »

Опубликовано в MySQL, PHP, Web разработка | Комментарии (20) »

Bug Tracker: ответы на комментарии (часть десятая)

28 марта, 2009
bug_tracker_logo_part10

В предыдущих частях (1, 2, 3, 4, 5, 6, 7, 8, 9) мы создали практически работоспособную систему отслеживания ошибок.

«Практически» в данном случае означает, что на данный момент у пользователя отсутствует возможность отвечать на комментарии. Т.е. можно оставить только комментарий 1-ого уровня (комментарий к багу).

Сегодня мы исправим этот недостаток.

Напомню, что на стороне сервера поддержка вложенных комментариев уже реализована. В базе данных (таблица comments) есть поле parent_id в котором хранится id родительского комментария.

Кроме того, метод addComment (модели mcomments) принимает массив с данными комментария, одним из полей которого является parent_id.

И, наконец, метод addcomment контроллера читает этот параметр из массива $_POST и передает его модели.

Таким образом, нам остается обеспечить возможность посетителю указывать на какой комментарий он хочет ответить.
Читать дальше »

Опубликовано в CodeIgniter, HTML, JavaScript, MySQL, PHP, Web разработка | Комментарии (74) »

BugTracker: авторизация и аутентификация (часть восьмая)

22 марта, 2009
bug_tracker_logo_part8

Приветствую всех читателей!

В этой части мы рассмотрим создание не сложной системы авторизации пользователей нашего баг трекера.

Для начала сформулируем задачу.

Как вы, наверное, помните, оставить сообщение о найденном баге или комментарий к нему может кто угодно. Но удалять записи и комментарии могут только администраторы.

На практике это будет выглядеть следующим образом. Администратор при входе вводит имя и пароль. Баг трекер их проверяет и, если они совпадают с записанными в базе данных, добавляет к каждому багу и комментарию ссылку «Удалить».

Кроме того, при выполнении каждой операции удаления необходимо проверить является ли текущий пользователь администратором.

Для справки. Эти проверки называются аутентификация и авторизация.
Читать дальше »

Опубликовано в CodeIgniter, MySQL, PHP, Web разработка | Комментарии (46) »

Bug Tracker: добавление записей и комментариев (часть седьмая)

18 марта, 2009
bug_tracker_logo_part7

В этой части цикла статей о разработке баг трекера мы рассмотрим добавление записей о багах и комментариев к ним.

Вообще-то обе эти операции сводятся к добавлению записей в таблицы bugs и comments, т.е. их можно выполнить с помощью всего пары строк кода.

Но, как несложно догадаться, основная часть работы будет заключаться в обработке данных.

Кроме того, нужно сразу решить вопрос с тегами и защитой от XSS атак.

Проблема следующая. Если разрешить пользователям вставлять в текст описания багов любые HTML теги и не выполнять никаких проверок, то кто угодно сможет провести любую XSS атаку. Например, вставить скрипт с редиректом на свой ресурс.

С другой стороны, если фильтровать все теги, то посетители не смогут использовать жирный шрифт, курсив и т.п.

Решить проблему можно с помощью bbCodes или фильтрацией части тегов. Например, теги script удаляем, а strong – не трогаем.

Я решил выбрать второй вариант. Тем более что его не сложно реализовать с помощью библиотеки HTML Purifier. Кроме фильтрации опасных тегов, библиотека исправляет ошибки в разметке. Например, добавляет закрывающие теги.

Подключение HTML Purifier к CodeIgniter.
Читать дальше »

Опубликовано в CodeIgniter, HTML, MySQL, PHP, Web разработка | Комментарии (28) »

Bug Tracker: создание страниц (часть шестая)

16 марта, 2009
bug_tracker_logo_part6

Мы продолжаем разработку собственной системы отслеживания ошибок. И сегодня подробно рассмотрим создание страниц нашего приложения.

В предыдущих частях мы определились с типами страниц. Напомню, их всего два: страницы с общим перечнем багов (главная и страницы категорий) и страницы отдельных багов с комментариями.

Т.к. общее количество записей о багах может быть большим, мы будем использовать библиотеку pagination, входящую в состав фреймворка CodeIgniter, для вывода этого списка по частям.

Количество записей на одной странице мы задаем в файле конфигурации (application\config\config.php).

$config['bugs_per_page'] = 5;

Получить значение этого параметра можно так:

$this->config->item('bugs_per_page');

Теперь определимся с названиями методов контроллера и структурой URL.

По-умолчанию, URL в CodeIgniter имеют такой вид:

sitename.domen/index.php/имя_контроллера/имя_метода/параметр1/параметр2/…

Контроллер у нас будет называться bugtracker, а метод, показывающий страницы с багами – page. В результате получим URL с такой структурой:

…/bugtracker/page/номер_записи

В последнем сегменте адреса указываем номер первой записи на текущей странице. Кстати, это не id бага в базе данных, это его индекс в массиве с результатами поиска по БД.

Создаём контроллер (application\controllers\bugtracker.php)
Читать дальше »

Опубликовано в CodeIgniter, CSS, HTML, MySQL, PHP, Web разработка | Комментарии (28) »