Как настроить кодировки для работы с PHP фреймворком CodeIgniter

Владимир | | CodeIgniter, PHP.

Поддержка кодировок в CodeIgniter
Недавно я столкнулся с проблемой.

Создал базу данных и в ней таблицу. Во время создания явно задал кодировку (utf-8).

После этого, установил и настроил CodeIgniter. Все представления (views) тоже были в кодировке utf-8, и, естественно, был добавлен мета-тег:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Т.е. кириллица в браузере отображалась правильно.

Начинаю добавлять данные в БД (с помощью scaffolding). Все отлично работает, буквы отображаются правильно.

Но, через некоторое время мне понадобилось сделать дамп базы. Запускаю phpMyAdmin, экспортирую базу и вижу вместо кириллицы «кракозябры»! При просмотре данных в phpMyAdmin – те же «кракозябры». Ввожу данные через phpMyAdmin – в нем все нормально, но на сайте – знаки вопроса.
Читать дальше

PHP framework CodeIgniter: контроллер и представления

Владимир | | CodeIgniter, PHP.

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

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

Подключаем модель к контроллеру

Для этого в конструкторе контроллера (system/application/controllers/catalog.php) добавляем строку

$this->load->model('catalogmodel');

Обратите внимание, что имя файла модели указывается без расширения (.php). Это правило относится и ко всем остальным компонентам фрэймворка (библиотекам, представлениям).

У вас мог возникнуть вопрос: «Почему подключение выполняется именно в конструкторе?». Тут все просто. Подключить модель можно в любом из методов. Но тогда она будет доступна только внутри этого метода, а т.к. оба метода нашего контроллера используют одну и ту же модель, то лучше подключить ее в конструкторе (не дублируется код).

Теперь мы можем вызывать методы модели. Например,

$this->catalogmodel->getAllBooks();
$this->catalogmodel->getBookDetails($bookid);

Читать дальше

PHP framework CodeIgniter: работа с базой данных

Владимир | | CodeIgniter, PHP.

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

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

Т.к. обоим методам нужна информация из базы данных, рассмотрим возможности CodeIgniter в плане работы с БД.

В соответствии с архитектурой MVC для работы с данными используется модель. Что бы создать модель в CodeIgniter нужно написать класс, наследующий Model и поместить его в папку system/application/models.

Для нашего приложения достаточно одной модели, назовем ее Catalogmodel. Создаем файл system/application/models/catalogmodel.php и записываем в него следующий код.
Читать дальше

PHP framework CodeIgniter: создаем небольшой web сайт

Владимир | | CodeIgniter, PHP.

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

Т.к. изучать фрэймворки (да и программирование вообще) лучше всего на примерах, создадим небольшой web сайт.

Допустим, нам нужен каталог книг. Для каждой книги у нас есть следующие данные:
— название;
— автор;
— количество страниц;
— жанр;
— аннотация.
Читать дальше

PHP framework CodeIgniter. Установка и настройка.

Владимир | | CodeIgniter, PHP.

CI горящие буквыВ минимальном варианте для использования CodeIgniter необходимы web сервер (например, Apache) и интерпретатор PHP. Кроме того, в большинстве случаев нужен сервер баз данных (например, MySQL).

Примечание. Подробное описание настройки этих компонентов вы найдете в статье «Установка и настройка WAMP».

Предположим, что все необходимые компоненты у вас установлены, а переменная сервера DOCUMENT_ROOT указывает на папку E:/my_sites/www/.
Распаковываем в эту папку, скачанный с официального сайта, архив.

Если вы сейчас зайдете на ваш сайт (http://localhost/), то увидите страницу приветствия CodeIgniter. В принципе, установка уже завершена, но, по ряду причин, такой вариант далеко не самый лучший.
Читать дальше

Как создать свой сайт на PHP? Или зачем нужны фреймворки?

Владимир | | CodeIgniter, Разное.

Создание своего сайта
Создание современного web сайта (приложения) представляет собой довольно трудоемкую задачу. Когда вы читаете книгу или руководство, то все кажется довольно простым. Демонстрационные программы редко бывают больше нескольких страницы. Все красиво работает…

Но, проблема в том, что это учебные примеры. Как только вы попытаетесь использовать их на практике, вы увидите, как увеличивается объем кода. Рассмотрим обработку данных, полученных из формы. Мы должны:

— проверить тип полученных значений;
— убедиться, что значения имеют допустимые величины (или формат);
— удалить из текста запрещенные теги (защита от XSS);
— заменить в параметрах SQL-запросов служебные символы на их эскейп последовательности (защита от SQL Injection);
— если параметры связаны между собой, проверить эти связи;
— и т.д.

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

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

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

Web разработка. Эффективное управление проектами (Subversion) – рабочие копии

Владимир | | Subversion.

Картинка для subversion
В прошлой статье мы начали знакомство с одной из самых популярных на сегодняшний день систем управления версиями – Subversion. На данный момент мы создали начальную структуру проекта и поместили ее в хранилище Subversion.

Напомню, для нашего проекта в хранилище создано две папки:
trunk – в ней будет находится основная ветка проекта;
и branches – для экспериментальных веток.

Теперь нужно создать рабочую копию. Для этого переходим в папку, которую будем использовать для работы с проектом, и выполняем команду:
svn checkout file:///e:/docs/svn/my_project/trunk

Обратите внимание, что к пути, указывающему размещение хранилища, мы добавили /trunk. Это означает, что мы создаем рабочую копию основной ветки проекта.

Т.к. на данном этапе проект пуст, то в папке с рабочей копией будет размещена только папка «.svn» (скрытая) со служебными файлами Subversion.

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

Добавляем файл в проект

Допустим, мы создали (в папке с рабочей копией) файл index.php и хотим добавить его в хранилище. Для этого выполняем команды:
svn add index.php
svn commit index.php -m "добавлен новый файл index.php"

Читать дальше

Web разработка. Эффективное управление проектами (Subversion)

Владимир | | Subversion.

Картинка для subversion
Существует мнение, что системы управления версиями предназначены исключительно для команд профессиональных программистов и бесполезны при самостоятельной разработке. В этой статье я постараюсь объяснить, почему это не так.

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

Самое главное достоинство таких систем состоит в том, что из них не может исчезнуть информация. Т.е. всегда можно вернуться к однажды сохраненной версии файла, независимо от того, какие изменения были в него внесены.

Рассмотрим простой пример. Допустим, вы делаете web страницу. Проект состоит из трех файлов (с разметкой, таблицей стилей и скриптами). На каком-то этапе вы получили приемлемый внешний вид, но решили немного поэкспериментировать. Естественно эти эксперименты затронут все три файла, причем изменения будут внесены в различные их части.

Чтобы сохранить текущую версию проекта, вы делаете копию его файлов и экспериментируете уже с ними. Через некоторое время у вас накапливается десяток таких копий. И тут… вы находите ошибку в скриптах. Естественно, исправить ее нужно во всех копиях. И начинается карусель: «открыть» — «найти» — «вставить» — «сохранить» — «закрыть» — «перейти в следующую папку» — «повтор».
Читать дальше

Разработка web приложений. Как сделать редактор списка в стиле Web 2.0 (настройка и оформление)

Владимир | | Ajax, JavaScript, PHP.

Скриншот WebListEditor
Это завершающая статья цикла о создании web редактора. Наш редактор позволяет создавать/изменять/удалять записи в обычном списке.

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

Примечание. Вы можете посмотреть демонстрационную версию редактора или скачать архив с файлами проекта.

Теперь несколько слов об установке этого приложения.

Прежде всего, вам нужно скачать архив с исходным кодом.

Естественно, у вас уже должен быть установлен web сервер (Apache), интерпретатор PHP и база данных MySQL. (Если у вас возникли сложности на этом этапе смотрите статью «Установка и настройка WAMP5»).

После этого создайте базу данных с одной таблицей.

Примечание. В архиве находится файл db.sql с sql запросом для создания нужной таблицы.

Теперь переименуйте файл dbdata_tmpl.php в dbdata.php (находится в папке scripts) и укажите в нем параметры подключения к базе данных.

Оформление списка

Изменить размещение элементов списка можно с помощью таблицы стилей, которая находится в файле styles.css.

Здесь нет ничего сложного. Единственное, на что стоит обратить внимание, это стили классов itemNum и itemValue.

.itemNum {
	float: left;
	width: 50px;
}

.itemValue {
	float: left;
	margin: 0px 0px 0px 0px;
}

Для них задано правило float: left, что позволяет разместить их в одну строку.

Такое же правило задано и для элемента listForm

#listForm {
	float: left;
}

Помните, этот элемент содержит форму встраиваемого редактора и при активации заменяет itemValue.

Для того чтобы каждая запись списка начиналась с новой строки, используется правило clear: both для тегов li

#list li {
	clear: both;
	margin: 0;
	border-top: solid 1px #fff;
	border-bottom: solid 1px #d5dded;
}

Заключение

Вот и все. Наше web приложение закончено. Посмотреть демонстрационную версию вы можете здесь. Обо всех замеченных недостатках пишите в комментариях.

Удачи!

Интересное

Соблазнение девушки — мифы и реальность.

Redisign. Переделал тему WordPress.

Владимир | | WordPress, Разное.

Старый дизайн (миниатюра)

Наконец-то, доделал новую тему для этого блога!

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

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

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

Все пожелания, замечания, советы и т.д. пишите в комментариях. Мне действительно будет очень интересно их почитать 🙂 .

P.S. На скриншоте показан предыдущий вариант дизайна (щелкните по картинке чтобы увеличить).

P.P.S. Также хочется выразить благодарность Максиму за сборку и Slaff’у за руководство. А также отдельное спасибо Scratch’у за совет о доступности форм.

Интересно почитать

Какие стрижки сейчас в моде