DOMPDF – экспорт данных из PHP в PDF

С помощью библиотеки DOMPDF можно создавать PDF файлы из HTML кода. Нужно только сверстать некий HTML шаблон и передать его DOMPDF и уже на выходе получить сгенерированный PDF файл. Но не надо забывать и то, что эта библиотека не движок для обработки веб-страниц, а значит и шаблоны должны быть сверстаны с использованием самых базовых средств: HTML тегов и CSS стилей. Хотя разработчики заявляют, что их библиотека поддерживает стандарты CSS 2.1 и даже некоторые свойства CSS 3. С полным их перечнем можно ознакомиться здесь. Есть, кстати, один минус – она является довольно “прожорливой” к оперативной памяти. Поэтому возможно придется задуматься об аренде виртуального выделенного сервера. Но это зависит от содержания и объема планируемых PDF документов. С другой стороны она вам может помочь сэкономить много времени на разработку различных отчетов в формате PDF. Читать далее

Сложные запросы используемые в MySQL

Всего лишь пару лет назад, в проектах, которые предусматривали работу с базами данных и построением статистики, основным изобилием используемых SQL-запросов, преобладало в основном множество запросов, ориентированных на стандартную выборку данных и нечасто можно было увидеть другие, которые безо всяких сомнений можно было бы отнести к “эксклюзиву”. Хотя сложность запроса и зависит от количества используемых таблиц, но если мы всего лишь возьмем и выведем данные полей трех или более таблиц имеющих стандартное объединение, то явная сложность такого запроса не выйдет за пределы стандартной.

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

Компонент календаря на PHP

Существуют ситуации когда нельзя воспользоваться компонентом календаря созданном на JavaScript. Как правило, это те случаи когда требуется возможность не автоматизировать выбор даты в HTML форме, а возможность привязки неких произошедших или планируемых событий к датам в будущем. Это может быть количество новостей на определенную дату, количество заказанных товаров или совершенных покупок в интернет-магазине и т.д. Т.е. в таких случаях становится очевидной необходимость в наличии связи календаря с базой данных, для получения тех или иных сведений за определенную дату. Конечно, можно было бы создать календарь на JavaScript и для получения данных о наличии тех или иных событий использовать Ajax, но как показывает практика такое решение не является оптимальным. Поэтому данный компонент календаря будет разработан на PHP. Читать далее

Данные от аккаунтов Яндекса попали в сеть

Буквально на днях было объявлено, что Яндекс, Mail.ru и вроде бы еще некий сервис будут “сливать” данные. Ну а кому, я думаю, объяснять не стоит, так как и так все ясно. И буквально сразу же становится известно о появлении в сети базы, содержащей данные от более миллиона аккаунтов пользователей Яндекса. Судя по обсуждениям, к примеру, на том же habrahabr.ru, база была именно “слита”. Потому что по утверждению некоторых, они имели не особо сложные пароли, но все-таки явно не для подбора. Конечно и “фишинг” тоже нельзя исключать.

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

Подводные камни в API Google Analytics

Попросил меня как-то раз очень давний знакомый написать ему небольшое веб-приложение по обработке отчетов полученных через API Google Analytics. Конечно сервисы Google, вещи то серьезные и соответственно ничто не предвещало никаких проблем.

Разработку предполагалось производить на PHP версии 5.2. После успешной находки пары примеров на PHP по взаимодействию с API Google Analytics и скачиванию уже разработанного клиента для работы с самим API, я начал разбираться, как и что работает. Пришлось для начала активировать сервис API Google Analytics и зарегистрировать приложение, ну а затем привязать его к своему аккаунту. Затем после небольшой модификации найденного мною примера исходного кода выяснилось, что нужна версия PHP 5.3. Хотя в документации было указано, что требуется использовать версию PHP 5.2.x или выше. Но и сотрудники службы поддержки Google заявляют тоже о необходимости использования PHP версии 5.3. Да, эта новость, конечно, не принесла радости, но все же было принято решение PHP обновить. Тем более что раньше уже было подобное желание, а тут еще и стимул появился. Читать далее

Нейронная сеть в PHP на Denwere 3

С переходом на новую версию Denwera, а соответственно вместе с ним и на новую версию PHP, возникла необходимость в обновлении некоторых расширений. В частности это коснулось и библиотеки – FANN (Fast Artificial Neural Network). Что, конечно же, особо не радовало. Поскольку как было описано в этой статье, изначальная установка данной библиотеки на Denwer 2 c версией PHP 5.2 – радости не принесла. Так как не было ясности: где искать расширение, какие нужны библиотеки и т.д. На первом месте был, конечно же, вопрос: а как обстоят дела с библиотекой FANN для PHP 5.3 под Windows? Но очень быстро был найден ресурс, где есть скомпилированные библиотеки для PHP под Windows от версий 5.3 и выше. Причем как было видно, имелся даже выбор разрядности. А также выбор типа PHP NTS(Non thread safe) или TS(Thread safe). Для того чтобы узнать тип PHP и остальную о нем информацию, необходимо воспользоваться функцией phpinfo(). Читать далее

PHP и формат передачи данных JSON

JSON (JavaScript Object Notation) – формат для обмена данными в текстовом виде. Позволяющий передавать сложные структуры данных в сериализованном виде. Этот формат передачи данных стал настолько популярен, что уже в ядро PHP начиная с версии 5.2.0, были добавлены функции по обработке данных в этом формате. А это значит, что нет необходимости в подключении дополнительных расширений. Формат данных JSON хорошо понятен человеку. Кроме того данный тип обмена данными широко используется между различными API сервисами. А при корректной разработке алгоритмов для обмена информацией, можно получить очень высокий прирост скорости чем, к примеру, при работе с данными в формате XML. Читать далее

Работа с zip-архивами в PHP

Уже долгие годы самым распространенным форматом сжатия данных, является формат ZIP. Данный формат широко используется в разработках под web. Поэтому многие языки для web-программирования имеют либо встроенные средства или возможности подключения необходимых библиотек для работы с zip-архивами.

Непосредственно в самом PHP функций для распаковки и создания zip-архивов нету. Хотя это зависит, от вариантов его сборки. Но они присутствуют в PHP расширении “php_zip”. И именно оно позволяет работать с архивными zip-файлами. Читать далее

Не все турпутевки одинаково хороши

С наступлением летнего сезона, некоторые люди начинают задумываться о том, где бы им провести свой долгожданный и заслуженный отпуск. И, конечно же, немалое количество людей обращаются в турагентства с надеждой приобрести “горяченькую” путевку. Только, наверное, не очень многие знают, что путевка может быть настолько “горячей”, что можно в прямом смысле сильно обжечься. А все дело в том, что если пару лет назад, люди приходили в офисы турагентств, то сейчас многие предпочитают приобрести или, по крайней мере, ознакомиться с предоставляемыми услугами туристических фирм через интернет. На первый взгляд в этом ничего необычного нету. Ведь online торговля уже довольно широко развита, да и зачем собственно куда-то ехать, если можно произвести оплату той же самой путевки всего лишь за пару минут. Но если бы не одно “но”. Торговля в online, кроме удобств имеет еще и обратную сторону “медали”. Читать далее

Плагин для jquery — saveform

В библиотеке jquery ui есть отличный виджет, это ui dialog. Он позволяет создавать красивые и многофункциональные диалоговые окна для вашего интерфейса. Но у него есть одна серьезная проблема, которая, к сожалению практически нигде не освящается. Данная проблема состоит в следующем: если в диалоговом окне будут расположены некоторые поля html формы, то при попытке отправки формы, эти самые поля не будут отправлены обработчику. Это вы, что то сделали не так? Возможно, вы спросите себя. Но на самом деле все гораздо проще.

А дело все в том, что html элемент div (предполагается, что этот тип элемента является областью диалогового окна), выпадает из html тега form. Иными словами, при использовании виджета ui dialog, DOM модель перестраивается. Ну и соответственно ни о какой передаче полей формы не может быть и речи. Поэтому в связи с такой не утешительной ситуацией, было принято решение о создании плагина, который впоследствии получил незамысловатое имя – saveform. Читать далее