Столкнулся с тем, что иногда гораздно удобнее и правильнее спрятать логику работы базы в хранимые процедуры.
1. Вызов процедуры, которая возвращает результат:
CREATE PROCEDURE returnresult(IN userid INT)
BEGIN
SELECT * from ... ;
END;
Тогда
<?php mysql_query('call returnresult(2)');'?>
выдаст ошибку “PROCEDURE base.returnresult can’t return a result set in the given context “.
Проблема в том, что библиотека mysql не поддерживает мульти-запросы. Для возврата результата из хранимой процедуры следует использовать улучшенную версию - библиотеку mysqli (improved).
Заменим в коде функции mysql на mysqli, (на локальном сервере для windows - добавим в файл php.ini строку: extension=php_mysqli.dll; аналогичной команды для *nix не знаю.). После этого все заработало.
2. Рекурсивные процедуры в mysql
При попытке использовать рекурсию mysql выдал:
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routineset …
Лечится запросом “SET max_sp_recursion_depth= 4″ // глубину рекурсии - в зависимости от задачи. Мне много не надо было. 
Опубликовано Январь 12, 2008 | автор: levik | Нет комментариев »
В настоящее время написано много шаблонизаторов. Многие php-программисты, думаю, слышали о SMARTY, FastTemplate и иже с ними. У каждого из шаблонизаторов свои особенности, но все они созданы для решения задачи “разделения контента и дизйна“.
Сущность шаблонизатора: дизайн “размещается” в отдельных файлах. В тексте файлов-шаблонов встречаются оформленные по определенным правилам последовательности символов, вместо которых должны подставляться данные. Некоторые “продвинутые” шаблонизаторы позволяют использовать циклы, условные конструкции и вставки кода на PHP.
Возникает вопрос, “А зачем?”. И, думаю, не безосновательно. Ведь PHP позволяет делать всё это. Парадокс? Авторы шаблонизаторов пытаются при помощи интерпретатора PHP создать свой интерпретатор, и считают, что это необходимо, хорошо, ну или просто… неплохо. Проделана огромная работа, потрачены часы, дни, месяцы.. Неужели, всё это зря!?
Попытаемся оправдать применение шаблонизатора. Читать целиком »
Опубликовано Октябрь 26, 2007 | автор: levik | Комментарий (1) »
IE 3px float bug - глюк IE 6.
<style>
#left {width: 200px;float: left; border: solid 1px #f00;}
#right {padding:0;border: solid 1px #0f0;margin: 0 20px 0 250px;}
#right p{background: #000;height: 100px;margin:0;}
</style><div id=”left”> </div>
<div id=”right”><p> </p></div>
В IE 6 появляется отступ 3 px у элемента p, который находится на уровне элемента #left, если блок “обтекается” другим блоком (у которого не задана высота) и у последнего есть дочерний блок(у которого задана высота), то этот дочерний блок будет иметь отступ в 3px от родительского блока слева. Замудрено, но похоже на правду…
Как лечить!?
1) Прописать высоту у элемента right (#right:height:1%)
2) С помощью условных комментариев задать отрицательный отступ в ie6
<!–[if lte IE 6]>
<style type=”text/css”>
#right p {margin-left:-3px;}
</style>
<![endif]–>
Опубликовано Октябрь 18, 2007 | автор: levik | Нет комментариев »
Corel draw ругается по поводу msxml4
Решение: после установки MSXML4 выполни regsvr32 msxml4.dll
Опубликовано Октябрь 14, 2007 | автор: levik | Нет комментариев »
- If a method can be static, declare it static. Speed improvement is by a factor of 4.
- echo is faster than print.
- Use echo’s multiple parameters instead of string concatenation.
Читать целиком »
Опубликовано Октябрь 9, 2007 | автор: levik | Нет комментариев »
Перенаправление на сайт с www
RewriteCond %{SERVER_NAME} !^www.*$
RewriteRule ^(.*)$ http://www.%{SERVER_NAME}/$1 [R]
Опубликовано Октябрь 5, 2007 | автор: levik | Нет комментариев »
Наконец-то я решился “завести” свой блог. Почему решился!? Просто я считаю, что не стоит плодить сайты, которые не принесут пользы. От этого сайта польза очевидна - он нужен… мне лично. Хотя бы для того, чтобы собирать нужную мне информацию. Возможно, это неправильно… Но я так решил.
Имею право.
Опубликовано Октябрь 1, 2007 | автор: levik | Нет комментариев »