Обработка произвольного количества полей на PHP

Владимир | | PHP, Web разработка.

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

Такие ситуации возникают, например, когда пользователь может добавлять или удалять поля в форме.

Прежде всего немного теории.

Как известно, сколько бы полей форма не содержала, PHP скрипт получит все эти значения в массиве $_POST. Ключи элементов этого массива будут соответствовать атрибутам name полей формы. Используя эти ключи мы можем получить значение любого из полей.

Т.е. можно в цикле перебрать все элементы массива $_POST и узнать значения всех полей.

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

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

Апгрейд движка WordPress и небольшой редизайн комментариев

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

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

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

Речь, прежде всего, идет о новом функционале комментариев. Например, раньше я использовал плагин YATCP для поддержки связанных комментариев, теперь эта функция поддерживается движком.

Кроме того, появились:

— возможность постраничного просмотра комментариев;

— множество новых классов, которые по-умолчанию присваиваются комментариям, что значительно упрощает их оформление;

— поддержка Gravatar'ок (об использовании этого сервиса можно почитать здесь);

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

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

Разработка с CodeIgniter: включаем автодополнение кода в Eclipse

Владимир | | CodeIgniter, Eclipse, PHP, Web разработка.

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

Eclipse, как и большинство других IDE, поддерживает эту функцию. Но автодополнение работает только для тех объектов, которые Eclipse может найти. И очень удобно, когда к таким объектам относятся не только стандартные функции PHP, но и все библиотеки и фреймворки, которые вы используете.

В этой статье я расскажу о нескольких способах подключения автодополнения кода для сторонних библиотек. В качестве примера рассмотрим фреймворк CodeIgniter.

Прежде всего, рассмотрим самый простой вариант.
Читать дальше

С Новым Годом!

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

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

Кстати, их довольно интересно читать 🙂 Сравниваешь со своими планами, заимствуешь идеи 🙂

Хотя действительно оригинальными идеями делиться никто не спешит 🙁 . Планы вроде «заработать миллион» и «увеличить посещаемость в 100 раз» несложно придумать и самому 😉 , а вот как их реализовать, да ещё и здоровье при этом не угробить – вопрос гораздо интереснее.

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

К тому же есть у меня одно интересное наблюдение. Я ни разу не видел, чтобы на действительно популярных и качественных блогах публиковали планы. Например, на NETTUS нет постов о том, сколько они хотят получить трафика через год, зато у них практически каждый день появляются интересные статьи. TechCrunch тоже не пишет о том когда планируется взять рубеж 100 постов в день 🙂

Поэтому я просто пообещаю, что постараюсь писать только полезные статьи, а сколько их будет… поживем – увидим 😉

А всем читателям хочу пожелать просто хорошего настроения в новом году!
Говорят – это жизнь продлевает 🙂

С Новым Годом!

Как написать задачу для Phing

Владимир | | Phing, PHP, Web разработка.

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

В этой статье я покажу пример создания такой задачи.

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

Допустим, нам нужно изменять кодировку файлов. На PHP сделать это можно, например, с помощью функции mb_convert_encoding. В качестве параметров она принимает:
— исходный текст;
— нужную кодировку;
— исходную кодировку.
А после выполнения возвращает перекодированный текст.

Т.е. можно написать элементарный PHP скрипт, который будет изменять кодировки указанных файлов.

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

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

Итак, приступим.
Читать дальше

Сравнение PHP IDE

Владимир | | CSS, Eclipse, HTML, JavaScript, PHP, Web разработка.

Приветствую всех! Тема прошлого поста неожиданно получила развитие 🙂

В прошлый раз Oleg Lobach попросил сделать сравнительную таблицу PHP IDE, а Александр Макаров предложил сделать это совместными усилиями. И не просто предложил, а сделал большую часть работы 🙂

Сам бы я, наверное, браться за такую таблицу не стал, т.к., например, с NetBeans я не работал. Точнее я им раньше пользовался, но только для Java.

В результате совместных усилий получилась

acrobat-reader

Сравнительная таблица основных PHP IDE.

Есть и HTML версия.

В нее вошли:
Читать дальше

Новая среда разработки на PHP

Владимир | | Eclipse, PHP, Web разработка.

Совсем недавно я узнал, что разработчики Aptana Studio выпустили расширение для PHP разработчиков. По большому счету говорить о новой среде разработки не совсем корректно, т.к. и сама Aptana Studio и Aptana PHP Development Environment представляют собой плагины к Eclipse IDE.

Тем не менее, плагин плагину рознь 😉 . И по количеству функций Aptana PHP гораздо ближе к IDE чем к обычному плагину.

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

Здесь вряд ли у вас возникнут проблемы. Самый простой способ – скачать Aptana Studio. Зайти в меню Help -> Software Updates -> Find and Install… После этого, отмечаете «Search for new features to install» и нажимаете Next.

Тут вы увидите список доступных расширений в котором первым идет Aptana: PHP Development Environment. Отмечаем его и жмем Finish.

Дальше процесс установки ничем не отличается от установки обычного плагина для Eclipse и описывать его я не вижу никакого смысла. Все ваши действия сведутся к подтверждению установки и нажатиям кнопки Next.

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

Новое расширение к FireFox для web разработчиков

Владимир | | JavaScript, Web разработка.

Буквально на днях появился очень полезный инструмент для JavaScript разработчиков под названием Fireunit.

Он представляет собой фреймворк для тестирования JavaScript кода и выполнен в виде плагина к браузеру FireFox. Написан он в виде надстройки над другим плагином — FireBug. И, как вы понимаете, работать без установленного FireBug не будет.

Кстати, авторы плагина: John Resig и Jan Odvarko.

Рассмотрим основные возможности Fireunit.

Интерфейс

Тут все просто. После установки плагина в окне Firebug появляется новая вкладка «Test» в которой выводятся результаты выполнения тестов.

Создание собственных тестов.

Каких-то специальных требований к оформлению тестов Fireunit не выдвигают. Насколько я понял, тестом считается вызов методов объекта fireunit (правда не всех).

Рассмотрим небольшой пример.
Читать дальше

Создание XML файлов из массивов на PHP

Владимир | | PHP, Web разработка.

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

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

Постановка задачи

Есть PHP массив (может быть многомерным). Нужно получить xml строку с данными из этого массива.

Немного теории

В дистрибутив PHP входит модуль XMLWriter, который предназначен для записи данных в XML формате. Использовать непосредственно этот модуль в своих скриптах не очень удобно, т.к. он поддерживает только самые базовые функции и преобразование массива в этот формат «выливается» в несколько десятков строк кода.

Поэтому мы напишем собственный класс (Array2XML), который будет представлять собой оболочку для XMLWriter'а и решать одну узкую задачу – преобразовывать PHP массив в XML формат.
Читать дальше

Небольшой опрос: wiki или блог?

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

Давно я хотел написать на эту тему, но все время откладывал. А на днях прочитал интересную заметку Эрика Венделина о том, как он использует wiki движок в качестве органайзера и вопрос сам собой всплыл на поверхность 🙂 . Кстати, его статья называется «Почему каждый программист должен использовать Tiddlywiki».

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

Т.е. сохранять информацию нужно и полезно 😉 , но возникает вопрос: «В каком формате это лучше сделать?».
Читать дальше