Посты по категории -> PHP
Пример JOIN и UPDATE
Дата: 04-12-2014
UPDATE products_prices as pp
INNER JOIN products as pr
ON pp.product_id=pr.id
SET price=price*1.1
WHERE pr.category_id=1
UPDATE products_prices as pp
INNER JOIN products as pr
ON pp.product_id=pr.id
INNER JOIN brands as br
ON pr.brand_id=br.id
SET price=price*$koef
WHERE br.id=$brand_id
Создаем страницу ошибки 404 Kohana 3.3
Дата: 28-10-2014
class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 {
/**
* Generate a Response for the 404 Exception.
*
* The user should be shown a nice 404 page.
*
* @return Response
*/
public function get_response()
{
$view = View::factory('errors/404');
// Remembering that `$this` is an instance of HTTP_Exception_404
$view->message = $this->getMessage();
$response = Response::factory()
->status(404)
->body($view->render());
return $response;
}
}
http://kohanaframework.org/3.3/guide/kohana/tutorials/error-pages
Примеры использования error_reporting()
Дата: 15-10-2013
<?php
// Выключение протоколирования ошибок
error_reporting(0);
// Включать в отчет простые описания ошибок
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Включать в отчет E_NOTICE сообщения (добавятся сообщения о
//непроинициализированных переменных или ошибках в именах переменных)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// Добавлять сообщения обо всех ошибках, кроме E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
// Добавлять в отчет все PHP ошибки (см. список изменений)
error_reporting(E_ALL);
// Добавлять в отчет все PHP ошибки
error_reporting(-1);
// То же, что и error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>
Класс Request Kohana
Дата: 27-09-2013
// From within a controller
$this->request->action();
$this->request->controller();
$this->request->directory();
//Can be used anywhere
Request::current()->action();
Request::current()->controller();
Request::current()->directory();
Таким образом мы можем в любом месте нашего приложения определить текущий контроллер, action и директорию.
Установка модуля Pagination Kohana 3.2
Дата: 02-05-2012
1. Качаем модуль по ссылке на GitHub https://github.com/kloopko/kohana-pagination
2. Устанавливаем в папку c модулями /modules/pagination/
3. Копируем файл с конфигом config.php в основную папку конфигов нашего приложения /application/config
У меня он выглядит так:
'default' => array(
'current_page' => array('source' => 'route', 'key' => 'page'), // source: "query_string" or "route"
'total_items' => 0,
'items_per_page' => 5,
'view' => 'pagination/basic',
'auto_hide' => FALSE,
'first_page_in_url' => FALSE,4. Неоходимо в bootsrap.php подключить модуль:
Добавить
Kohana::modules(array(
'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
'captcha' => MODPATH.'captcha', //Captcha
'pagination' => MODPATH.'pagination', // Pagination
));4. Переписываем роут где нужно сделать постраничную навигацию:
Route::set('default', '((/(/page)(/)))', array('page'=>'[0-9]+'))
->defaults(array(
'controller' => 'index',
'action' => 'index',
));5. В экшине контроллера где выводится постраничная навигация прописываем, что-то вроде:
public function action_index() {
// echo 'Page -> ' . $this->request->param('page');
$count = ORM::factory('note')->count_all();
$pagination = Pagination::factory(array(
'total_items' => $count,
))
->route_params(array(
'controller' => Request::current()->controller(),
'action' => Request::current()->action(),
));
$posts = ORM::factory('note')->order_by('date', 'DESC')
->limit($pagination->items_per_page)
->offset($pagination->offset)
->find_all();
$this->template->content = View::factory('front/v_posts', array(
'posts' => $posts,
'pagination' => $pagination,));
}6. В вид переданы посты и html постраничной навигации. That's all!
Серверные переменные PHP. Суперглобальный массив $_SERVER.
Дата: 12-02-2012
PHP содержит ряд суперглобальных массивов, которые доступны из любой части скрипта.
Массив $_SERVER
Просмотреть его можно, например, при помощи дампа массива - print_r($_SERVER) или phpinfo();
Наиболее часто используемые:
$_SERVER['HTTP_HOST'] - Имя сервера, которое, как правило, совпадает с доменным именем сайта, расположенного на сервере. Как правило, имя, указанное в данном параметре совпадает с именем $_SERVER['SERVER_NAME'].
$_SERVER['HTTP_USER_AGENT'] - Отдает информацию о типе броузера и операционной системы посетителя. Например, Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
$_SERVER['HTTP_ACCEPT'] - Содержание заголовка ACCEPT. Например, text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
$_SERVER['HTTP_ACCEPT_LANGUAGE'] - Содержание заголовка Accept-Language. Напимер, en-us,en;q=0.7,ru;q=0.3
$_SERVER['HTTP_ACCEPT_ENCODING'] - Содержание заголовка Accept-Encoding, если он есть. Например, gzip, deflate
$_SERVER['HTTP_ACCEPT_CHARSET'] - Содержание заголовка Accept-Charset. Например, ISO-8859-1,utf-8;q=0.7,*;q=0.7
$_SERVER['HTTP_CONNECTION'] - Содержание заголовка Connection. Например, keep-alive
$_SERVER['HTTP_CACHE_CONTROL'] - Содержание заголовка Connection. Например, max-age=0
$_SERVER['PATH'] - /sbin:/usr/sbin:/bin:/usr/bin
$_SERVER['SERVER_SIGNATURE'] - Описание веб-сервера. Например, Apache/2.2.15 (CentOS) Server at 194.189.70.48 Port 80
$_SERVER['SERVER_SOFTWARE'] - Веб-сервер. Ответ: Apache/2.2.15 (CentOS)
$_SERVER['SERVER_NAME'] - Имя сервера, как правило, совпадающее с доменным именем сайта. Например, site.com, 194.411.70.48
$_SERVER['SERVER_ADDR'] - IP-адрес сервера. Например, 192.168.1.156
$_SERVER['SERVER_PORT'] - Порт работы веб-сервера. Например, 80
$_SERVER['REMOTE_ADDR'] - Удаленный адрес клиента. Например, 192.168.1.1
$_SERVER['DOCUMENT_ROOT'] - Корневая директория в которой находится скрипт. Например, /var/www/http/
$_SERVER['SERVER_ADMIN'] - Адрес администратора сервера. Например, admin@gmail.com
$_SERVER['SCRIPT_FILENAME'] - Абсолютный путь к скрипту от корня ОС. Например, /var/www/http/php/index.php
$_SERVER['REMOTE_PORT'] - Порт удаленного клиента. Например, 56415
$_SERVER['GATEWAY_INTERFACE'] - Версия интерфейса Common Gateway Interface (CGI), который используется в работе сервера. Например, CGI/1.1
$_SERVER['SERVER_PROTOCOL'] - Описание версии протокола, используемой сервером. Например, HTTP/1.1
$_SERVER['REQUEST_METHOD'] - Метод запроса, который применяется для вызова скрипта: GET или POST. Например, GET
$_SERVER['QUERY_STRING'] - Параметры, переданные скрипту, если строка запроса представляет собой адрес.
$_SERVER['REQUEST_URI'] - Имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес. Например, /php/
$_SERVER['SCRIPT_NAME'] - Значение пути к скрипту от корня адреса. Например, /catalog/index.php
$_SERVER['PHP_SELF'] - Имя скрипта, начиная от корневой директории виртуального хоста, т.е. если строка запроса представляет собой адрес http://site.com/php/index.php, то ответ будет: /php/index.php
$_SERVER['REQUEST_TIME'] - Время старта скрипта в формате timestamp. Например, 1331575390
SyntaxHighlighter в CKeditor на Kohana
Дата: 27-02-2011
1. Качаем последнюю версию SyntaxHighlighter (на момент написания 3.0.83 по ссылке http://alexgorbatchev.com/SyntaxHighlighter/download/download.php?sh_current. Устанавливаем в директорию /media/js/syntax
2. Качаем плагин SyntaxHighlighter для CKeditor по ссылке http://code.google.com/p/ckeditor-syntaxhighlight/downloads/list.
3. Распаковываем и устанавливаем его в папку с CKeditor, например /media/js/ckeditor/plugins/syntaxhighlight
4. Подключаем файлы стилей для подсветки кода, ядро и тему по дефолту (можно и другие темы, список тем и демо к ним здесь - http://alexgorbatchev.com/SyntaxHighlighter/manual/themes/)
$this->template->styles = array('media/css/style.css',
'media/js/syntax/styles/shCore.css',
'media/js/syntax/styles/shThemeDefault.css');5. Далее подключаем файлы скриптов с нужными языками:
$this->template->scripts = array(
/* 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', */
'media/js/syntax/scripts/shCore.js',
'media/js/syntax/scripts/shBrushPhp.js',
'media/js/syntax/scripts/shBrushJScript.js',
'media/js/syntax/scripts/shBrushCss.js',
'media/js/syntax/scripts/shBrushBash.js',
);
$this->template->scripts[] = 'media/js/jquery-1.6.2.min.js';5. В конфиге CKeditor - в файле config.js прописываем:
CKEDITOR.editorConfig = function( config )
{
config.extraPlugins = 'syntaxhighlight';
config.toolbar_Full.push(['Code']);
};6. В нужно view выводим функцию включения плагина:
7. После чего в панели CKeditor должна появится кнопка вставки кода:

8. После нажатия вываливается окно с опцией выбора языка подсветки (который должен быть обязательно прописан в п.4 )

9. Во вкладке Advanced есть возможность опциально выделить любые строки кода, уставновить флажок переноса строк (что достаточно удобно) и еще пару функции - начало строки ит.д.