Блог Михаила Крамера. PHP и JS
PHP
28.05.2020
Для извращенцев вроде меня, которые ещё используют апач периодически. basename врёт, когда в именах файла русские буквы
27.04.2015
Написать этот пост меня побудили вопросы на эту тему на форуме php.ru. Итак, нужно при задании фильтров каких-то объектов (например, товаров) динамически формировать where. Сейчас я покажу, как это делается в построителях запросов известных мне фреймворкоа. Возьмём простой случай, когда все поля для фильтрации в одной таблице, и не требуется join-ов.
21.04.2015
Проверка, входит ли IP в заданную подсеть
04.03.2015
Ещё одна функция из разряда "маленький полезный пустячок". Задача - подставить правильное окончание для количества чего-нибудь. К примеру, 1 комментарий, 2 комментария и т.п.
14.01.2015
Практически во всех фреймворках реализована очень удобная работа с формами, позволяющая легко сделать валидацию вводимых данных. А что, если проект не настолько крупный, чтоб использовать целый фреймворк, но формы для ввода данных все равно хочется проверять. Сегодня я хочу показать, как на php можно написать достаточно универсальный класс валидации данных.
10.12.2014
Возникла задача - сравнить временные промежутки, проверить, пересекаются ли они.
20.08.2014
Достаточно долго в моих проектах разбиение на слова делалось очень простой регуляркой, но понадобилось сделать разбиение слов для азербайджанского языка
23.06.2014
Алгоритм не сложный, но так не хочется каждый раз его сочинять
15.06.2014
Полезный алгоритм, из тех, которые лучше знать. Итак, задача: есть изображение (потенциально - большое), есть максимальная высота и ширина. Надо уменьшить изображение пропорционально так, чтобы оно влезло в эти максимальные пределы.
13.01.2014
Итак, заказчиком поставлена была следующая задача: выводить к каждой записи 4 её "соседей" - ближайшие записи, созданные раньше и позже пользователем. Типа это улучшит индексацию сайта, и создаст дополнительное удобство пользователям. Причём, записи по возможности надо выводить - 2 добавленные ранее, и две добавленные после, чтоб название текущей оказалось в середине. Ну что просили, то мы и сделали
12.01.2014
Начиная с Joomla 1.6 появилась возможность для любого компонента делать альтернативные макеты. Это достаточно подробно рассматривается во многих источниках в Интернете, поэтому часть проблемы я рассмотрю обобщённо, и уделю больше внимание тому, что вызвало трудности у меня при работе с альтернативными макетами. Как обычно и делается, для примера мы возмём компонент com_content. К примеру, нам надо сделать альтернативный макет конкретной статьи. Для этого в каталоге своего шаблона создаются ряд вложенных каталогов, чтоб в итоге получилось html/com_content/article. Узнать имя папки просто. Для этого достаточно посмотреть каталог /components/com_content/views.
11.01.2014
Ну здесь, я думаю, всё ясно из заголовка. Скрипт стащил отсюда. function listdir_by_date($path){ $dir = opendir($path); $list = array(); while($file = readdir($dir)){ if ($f…
09.01.2014
Как известно, функция WordPress wp_nav_menu() для вложенных меню использует просто вложенный в <li> тег <ul>. Чаще всего это более чем достаточно, но иногда сложный дизайн меню требует больше элементов для вёрстки. Что и было в моём случае. Я уже думал, что придётся выводить меню вручную, без использования wp_nav_menu(), однако, внимательнее перечитав документацию по ссылке выше, увидел очень красивое решение этой проблемы, специально заготовленное WordPress.
05.01.2014
Честно говоря, об этом обязательно написано в любом нормальном учебнике по PHP, однако, общаясь на форуме сайта php.ru, постоянно приходится объяснять этот аспект начинающим. И чтобы можно было просто давать ссылку на материал, я решил написать эту статью. Итак, правильный ответ на этот вопрос - скрипт на php не может реагировать на действия пользователя на странице!
13.12.2013
В программировании для WordPress иногда сталкиваешься с ситуациями, когда необходимо добавлять посты из PHP-кода. Обычно такое случается, если вы не хотите, по каким-то причинам, показывать пользователю админку, China но хотите, чтоб он мог добавлять материалы. Или, как было в моём случае, когда вы используете  пользовательские типы записей, и опять же, пользователь сайта должен иметь возможность добавлять новые записи.