Генерация XML в PHP
Генерация XML в PHP

Генерация XML в PHP

Совсем недавно в связи с производственной необходимостью мне стало необходимо познакомится со стандартными механизмами работы с XML в PHP. Перелопатил половину интернета, но мне удалось найти только несколько примеров из мануала, но готовых работающих решений по генерации xml документов не встретил. Я решил исправить это упущение и подготовил маленькую статью на тему создания xml документа базовыми механизмами PHP.

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

Опубликовано в рубрике XML | Комментирование закрыто
Вывод деревьев вложенных множеств (три уровня) (Nested Sets) одним запросом (MySQL 5) с генерацией (PHP) json запроса для плагина Treeview (Jquery)

Вывод деревьев вложенных множеств (три уровня) (Nested Sets) одним запросом (MySQL 5) с генерацией (PHP) json запроса для плагина Treeview (Jquery)Недавно передо мной встала задача вывода json запроса для одного хорошего платина для jquery (Treeview). Сложность состояла в том, что данные необходимо собрать из БД (mysql) в которой даннные организованны в формате деревьев вложенных множеств (Nested Sets). Ну а сам json запрос необходимо еще собрать из запроса (PHP). Ниже приведено решение этой задачи для дерева ограниченного тремя уровнями, иными словами решение задачи не является универсальным, но его не сложно модифицировать для аналогичных требований.

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

Опубликовано в рубрике MySQL, PHP, jQuery | Теги | Комментирование закрыто
INNER JOIN или цыклы в SQL на примере MySQL
INNER JOIN в MYSQL

INNER JOIN в MYSQL

Недавно я столкнулся с задачей задания цикла в MySQL и наткнулся на достаточно тривиальное решение этого вопроса, а точнее использование INNER JOIN в MYSQL.
Читать дальше »

Опубликовано в рубрике MySQL | Комментирование закрыто
Zend framework для начинающих (работа с сессиями (session))
Берем за основу нашу работающую структуру (Ссылка), про то как настроить сервер написано тут (на примере сборки XAMPP).
В принципе тут все очень просто, как говорится дело нескольких строк кода:
Главный контроллер (IndexController.php) должен выглядеть следующим образом :
<?php
/**
* Главный контроллер
*/
class IndexController extends Zend_Controller_Action {
/**
* Доступ для всех session переменных
* @var Zend_Session_Namespace
*/
protected $session;
/**
* Метод обработки до вызова контроллера
*/
public function preDispatch(){
$this->session = new Zend_Session_Namespace(’Default’);
/**
* тут думаю все ясно, если переменный count нет,
* то создаем, если есть до добавдяем единицу
*/
if(isset($this->session->count)){
$this->session->count++;
}else{
$this->session->count = 0;
}
}
/**
* Этот экшн вызывается по умолчанию, т.к. он index
*/
public function indexAction(){
// Вывод меременной  на струницу в views
$this->view->count  = $this->session->count;
}
}
Все что мы делаем в этом контроллере можно разделить на три этапа
Первый этап подготовки контроллера главного ZendFramework
Создаем переменную, в которой у нас будет лежать соотведствующие переменные
/**
* Доступ для всех session переменных
* @var Zend_Session_Namespace
*/
protected $session;
После чего создаем метод вызова сессий и накрутки счетчика
/**
* Метод обработки до вызова контроллера
*/
public function preDispatch(){
$this->session = new Zend_Session_Namespace(’Default’);
/**
* тут думаю все ясно, если переменный count нет,
* то создаем, если есть до добавдяем единицу
*/
if(isset($this->session->count)){
$this->session->count++;
}else{
$this->session->count = 0;
}
}
Второй этап вывод содержимого в views
В главном методе (indexAction) добавляем вывод переменной count в views
public function indexAction(){
// Вывод меременной  на струницу в views
$this->view->count  = $this->session->count;
}
Третий этап настройка views
Открываем views (index.phtml) относящийся к главному контроллеру (/application/views/scripts/index)и добавляем туда информацию о переменной count. index.phtml должен выглядеть так:
<h1>Работа с сессиями</h1>
<p>Счетчик обновлений странцы: <?php echo $this->count;  ?></p>
Теперь в браузере открываем страницу с нашим zendframework’ом и несколько раз обновим страницу и уведем как работает наш счетчик.

Zend framework для начинающих (работа с сессиями (session))Пример работы с сессиями в Zend Framework на пример простого счетчика обновления страницы.

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

Опубликовано в рубрике Zend framework | Комментирование закрыто
Zend framework для начинающих (Hello world и обработчик ошибок)
zf-hello-worldПопробуем написать «Hello world» с использованием zend framework. В принципе в этой задаче нет ничего сложного, для новичков работы с zend framework бывает трудно сделать первый шаг,  т.е. создать структуру каталогов zend framework, а она здесь не жесткая, но есть рекомендации по ее формированию, на основе их мы все и сделаем.
Я рекомендую использовать на первых этапах обучения облегченный пакет Minimal Package (5 Мб. http://www.zend.com/community/downloads/, для этого придется зарегистрироваться) и использовать бесплатную IDE NetBeans (26 Мб. Сборка PHP http://www.netbeans.org/downloads/index.html) я искренне считаю ее лучшей средой разработки, в том числе и для zend framework.
Предполагается, что у Вас есть настроенный сервер (Например XAMPP) , о том как это сделать написано тут (ссылка), а о том как настроить viralhosts тут (ссылка).
Начинаем работу с Zend Framework
Наш сайт будет называться ZF.local (сокращение от Zend Framework) и как всегда в правильных сайтах (:-)) у Вас должна быть такая структура Вашего сайта:
/
o www (тут будет находится Zend Framework)
? public (место для публичной части Zend Framework)
o logs (директория для log’ов)
? error_log.txt (место для ошибок)
Сразу хочу оговориться, что в Zend Framework рекомендуется часть файлов (public) размещать в разделе www (разделе открытом для просмотра) , а часть (остальное) в закрытых разделах (на уровень ниже), но мы все положим в папку www и скажем серверу, где у нас index’сный файл.
Еще одно замечание в Zend Framework можно создать практически любую структуру папок со своими названиями для них, ниже описан лишь один вариант (правда, наиболее распространенный).
Настраиваем XAMPP для работы с Zend Framework
Создаем в директории htdocs (в случае windows и XAMPP это будет C:\xampp\htdocs) директорию  zf.local в которой создадим папки www и logs.
Вот что у нас должно получиться (Скрин из окна проектов NetBeans):
Zend framework для начинающих

Zend framework для начинающих

Попробуем написать «Hello world» с использованием zend framework. В принципе в этой задаче нет ничего сложного, для новичков работы с zend framework бывает трудно сделать первый шаг,  т.е. создать структуру каталогов zend framework, а она здесь не жесткая, но есть рекомендации по ее формированию, на основе их мы все и сделаем.

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

Опубликовано в рубрике Zend framework | Комментирование закрыто
Создание форм в Ext JS и их проверка регулярными выражениями
DcСоздание форм в Ext JS и их проверка регулярными выражениями.
Предположим нам необходимо создать средствами Ext JS простенькую форму с малым набором полей (Имя, E-mail, Персональный номер).
Формат полей:
Имя – Поле не должно быть пустым, должно содержаться до 100 русских букв и начинаться со строчной буквы.
E-mail – просто поле электронной почты со стандартным набором валидации.
Персональный номер – специфическое поле, которое должно выглядеть так: sra-30234-azs21.
Как  заставить работать Ext JS написано тут (ссылка) , а как настроит сервер apache тут (ссылка), не будем заострять на этом внимание и приступим сразу же к обсуждению исходного кода:
<html>
<head>
<title></title>
<meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″>
<link rel=»stylesheet» type=»text/css» href=»/js/resources/css/ext-all.css» />
<script src=»/js/adapter/ext/ext-base.js»></script>
<script src=»/js/ext-all-debug.js»></script>
</head>
<body>
<script type=»text/javascript»>
Ext.onReady(function(){
// Начинаем выполнение скрипта после готовности страницы (построение DOM)
Ext.BLANK_IMAGE_URL = ‘images/s.gif’;
// Задаем путь к пустой картинке
Ext.QuickTips.init();
// Небходима для вывода сообщений об ошибках
Ext.form.VTypes['nameVal']  = /^([А-Я]{1})[а-яА-Я\-]+/;
// Проверка правильности ввода
Ext.form.VTypes['nameMask'] = /^[а-яА-Я]$/;
// Маска ввода (другие символы вводится не будут)
Ext.form.VTypes['nameText'] = ‘Ошибка в имени’;
// Этот текст увидет пользователь в случае ошибки заполнения поля
Ext.form.VTypes['name'] = function(v){
return Ext.form.VTypes['nameVal'].test(v);
};
// Механизм анализа правильности ввода данных в поле
Ext.form.VTypes['inumberVal']  = /^[a-zA-Z]{3}-[0-9]{5}-[a-zA-Z0-9]{5}$/;
Ext.form.VTypes['inumberMask'] = /^[a-zA-Z0-9\-]$/;
Ext.form.VTypes['inumberText'] = ‘Ошибка в персональном номере’;
Ext.form.VTypes['inumber'] = function(v){
return Ext.form.VTypes['inumberVal'].test(v);
};
Ext.form.VTypes['emailText'] = ‘Ошибка во вводе E-mail адреса’;
// тип проверки email является стандартным, мы лишь ввели свой текст
new Ext.FormPanel({ // Начинаем создавать объект формы
labelWidth: 85, // Ширина ячейки описания поля
url:’./’,       // Адрес куда будет отправляться запрос формы
frame:true,     // выводит форму единым фреймом
title: ‘Наша форма’, // Заголовок формы
renderTo: document.body, // Где генерировать форму (сейчас в теге body)
bodyStyle:’padding:5px 5px 0′, // Оформление границ формы
width: 450, // ширина фрайма формы
defaults: {width: 200}, // в значениях «по умолчанию» указана ширина полей
defaultType: ‘textfield’, // тип полей «по умолчанию» выбран textfield
items: [{   // задаем поля
fieldLabel: 'Имя', // Описание поля
name: 'name', // имя поля
vtype: 'name' // ключ к валидации выше
},{
fieldLabel: 'Email',
name: 'email',
vtype:'email'
},{
fieldLabel: 'Персональный номер',
name: 'inumber',
vtype: 'inumber'
}
],
buttons: [{ // задаем кнопки
text: 'Сохранить' // просто кнопка
},{
text: 'Отмена'
}]
});
});
</script>
</head>
<body>
</body>
</html>
Это то что Вы получите при работе этого кода:
Создание форм в Ext JS и их проверка регулярными выражениями.
Предположим нам необходимо создать средствами Ext JS простенькую форму с малым набором полей (Имя, E-mail, Персональный номер).
Формат полей:
Имя – Поле не должно быть пустым, должно содержаться до 100 русских букв и начинаться со строчной буквы.
E-mail – просто поле электронной почты со стандартным набором валидации.
Персональный номер – специфическое поле, которое должно выглядеть так: sra-30234-azs21.
Как  заставить работать Ext JS написано тут (ссылка) , а как настроит сервер apache тут (ссылка), не будем заострять на этом внимание и приступим сразу же к обсуждению исходного кода:
<html>
<head>
<title></title>
<meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″>
<link rel=»stylesheet» type=»text/css» href=»/js/resources/css/ext-all.css» />
<script src=»/js/adapter/ext/ext-base.js»></script>
<script src=»/js/ext-all-debug.js»></script>
</head>
<body>
<script type=»text/javascript»>
Ext.onReady(function(){
// Начинаем выполнение скрипта после готовности страницы (построение DOM)
Ext.BLANK_IMAGE_URL = ‘images/s.gif’;
// Задаем путь к пустой картинке
Ext.QuickTips.init();
// Небходима для вывода сообщений об ошибках
Ext.form.VTypes['nameVal']  = /^([А-Я]{1})[а-яА-Я\-]+/;
// Проверка правильности ввода
Ext.form.VTypes['nameMask'] = /^[а-яА-Я]$/;
// Маска ввода (другие символы вводится не будут)
Ext.form.VTypes['nameText'] = ‘Ошибка в имени’;
// Этот текст увидет пользователь в случае ошибки заполнения поля
Ext.form.VTypes['name'] = function(v){
return Ext.form.VTypes['nameVal'].test(v);
};
// Механизм анализа правильности ввода данных в поле
Ext.form.VTypes['inumberVal']  = /^[a-zA-Z]{3}-[0-9]{5}-[a-zA-Z0-9]{5}$/;
Ext.form.VTypes['inumberMask'] = /^[a-zA-Z0-9\-]$/;
Ext.form.VTypes['inumberText'] = ‘Ошибка в персональном номере’;
Ext.form.VTypes['inumber'] = function(v){
return Ext.form.VTypes['inumberVal'].test(v);
};
Ext.form.VTypes['emailText'] = ‘Ошибка во вводе E-mail адреса’;
// тип проверки email является стандартным, мы лишь ввели свой текст
new Ext.FormPanel({ // Начинаем создавать объект формы
labelWidth: 85, // Ширина ячейки описания поля
url:’./’,       // Адрес куда будет отправляться запрос формы
frame:true,     // выводит форму единым фреймом
title: ‘Наша форма’, // Заголовок формы
renderTo: document.body, // Где генерировать форму (сейчас в теге body)
bodyStyle:’padding:5px 5px 0′, // Оформление границ формы
width: 450, // ширина фрайма формы
defaults: {width: 200}, // в значениях «по умолчанию» указана ширина полей
defaultType: ‘textfield’, // тип полей «по умолчанию» выбран textfield
items: [{   // задаем поля
fieldLabel: 'Имя', // Описание поля
name: 'name', // имя поля
vtype: 'name' // ключ к валидации выше
},{
fieldLabel: 'Email',
name: 'email',
vtype:'email'
},{
fieldLabel: 'Персональный номер',
name: 'inumber',
vtype: 'inumber'
}
],
buttons: [{ // задаем кнопки
text: 'Сохранить' // просто кнопка
},{
text: 'Отмена'
}]
});
});
</script>
</head>
<body>
</body>
</html>
Это то что Вы получите при работе этого кода:
Ext JS

Ext JS

Предположим нам необходимо создать средствами Ext JS простенькую форму с малым набором полей (Имя, E-mail, Персональный номер).

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

Опубликовано в рубрике Ext JS | Комментирование закрыто
Установка SVN (Subversion)
Установка SVN (Subversion)

Установка SVN (Subversion)

Нам необходимо установить  SVN (Subversion— свободная централизованная система управления версиями), без дополнительных вопросов, просто взять и установить на один из компьютеров локальной сети с возможностью доступа к репозиторию со всей сетки.

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

Опубликовано в рубрике SVN | Комментирование закрыто
Настройка virtualhost в apache
Настройка virtualhost в apache

Настройка virtualhost в apache

После установке XAMPP нам необходимо настроить виртуальный хосты для того чтобы у нас для каждого сайты был свой локальный домен в доменной зоне «.local».
Читать дальше »

Опубликовано в рубрике Apache | Комментирование закрыто
Установка и настройка виртуального сервера (WAMP – Windows, Apache, MySQL, PHP) на примере XAMPP
XAMPP

XAMPP

Для того чтобы можно было начать изучать язык программирования PHP необходимо установить и настроить виртуальный сервер Apache со всеми необходимыми модулями и базой данных MySQL.
Самый простой и удобный способ это сделать, это установить связку WAMP  (Windows, Apache, MySQL, PHP) построенную на основе XAMPP.

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

Опубликовано в рубрике WAMP | Комментирование закрыто
Ext JS для начинающих часть 1 (hello world)

Ext js для начинающих часть 1В этой статья будет начат обзор фраймворка Ext JS и как всегда самым первым действием это будет вывод сообщения «Hello World!», во всплывающем окне.
Читать дальше »

Опубликовано в рубрике Ext JS | Комментирование закрыто