• Как приспособить пагинацию?

    Stac
    @Stac
    О, я воздержусь от примеров кода, чтобы у вас не было соблазна их использовать.

    Вам нужно разделить код получения данных из БД и код вывода HTML в браузер.

    Дальше можете действовать по алгоритму:
    1) Сделать запрос "SELECT max(id), count(*) FROM `products`".
    Количество нужно для определения числа страниц.
    А max(id) может быть и не понадобится. Так как вывод отсортирован по убыванию (от новых к старым), а новые изображения могут добавляться в галерею, можно запоминать id первого изображения на первой странице.
    2) Получить из $_GET номер нужной страницы (используйте функцию filter_input()).
    3) Получить количество изображений на странице из конфига или тоже из $_GET, если вы хотите, чтобы пользователь мог управлять этим параметром.
    4) Сделать запрос с БД 'SELECT id, name, description, price, image FROM products WHERE id <= $max_id ORDER BY id DESC LIMIT $limit OFFSET $offset';

    где, $max_id это id самой новой записи в текущей сессии, $limit - количество картинок на странице, $offset = $limit * ($p-1), где $p - номер страницы (нумерация страниц с 1).

    Используйте подготовленные запросы, как у вас в примере.

    $stmt = $DB_con->prepare('SELECT id, name, description, price, image FROM products WHERE id <= ? 
            ORDER BY id DESC LIMIT ? OFFSET ?');
     $stmt->execute(array($max_id, $limit, $offset));


    5) Выбрать из БД нужные данные и передать в код отвечающий за представление.

    В представлении (коде, генерирующем HTML) нужно не только вывести картинки текущей страницы, но и сформировать ссылки на другие страницы.

    Количество страниц = количество записей в БД / $limit.

    Сложность возникнет лишь, если у вас количество страниц так велико, что ссылки на них не помещаются на экран по ширине. Тогда нужно будет придумать алгоритм, по которому какие-то ссылки показывать, а какие-то нет.
    Ответ написан
    Комментировать
  • Как сделать сборку комплектации кухни на сайте?

    Stac
    @Stac
    Вот тут есть готовый конструктор кухонь.
    Мы планировали его использовать в одном проекте. Проект не состоялся, поэтому о реальном опыте работы с конструктором не расскажу.
    Ответ написан
    2 комментария
  • Куда клиенты валят с Upwork?

    Stac
    @Stac
    Слышал в одном фрилансерском подкасте, что заказчики валят в LinkedIn.

    Возможно стоит обратить на эту соц сеть внимание.
    Ответ написан
    1 комментарий
  • Как вычистить css - неиспользуемые классы?

    Stac
    @Stac
    Расширение для Chrome: CSS remove and combine создает новый css удаляя неиспользуемые правила.
    Ответ написан
    2 комментария
  • Как обернуть выделенный текст textarea в теги при нажатии на CTRL+B?

    Stac
    @Stac
    Если предусмотрен wysiwyg редактирование текста, то
    это можно сделать путем скрытия textarea, появлением на его месте div тех же размеров с установленным атрибутом conteneditable. Пользователь вводит текст, поддержка CTRL-B обеспечивается браузером.
    В конце innerHTML переносится в value textarea. HTML чистится и HTML теги заменяются на bb-code.
    Иначе,
    см. ответ от Валерий Селицккий
    Ответ написан
    Комментировать
  • Нужна помощь гиков). Как отправить письмо через 15 лет?

    Stac
    @Stac
    Стоит посмотреть на задачу под другим углом и упростить.

    Например, вместо того, чтобы отправлять письмо через 15 лет, лучше отправить 15 писем через год. Для вас задача при этом усложняется, но для исполнителей упрощается. Этим повышается надежность и вероятность успешного выполнения.

    Делается 15 (плюс-минус) комплектов софта. Один из них предоставляет доступ к посланию для сына, остальные предоставляют доступ к друг другу. Получается цепочка.

    Находится надежный человек или несколько. Они получат от первого скрипта письмо через год. там будет задание, состоящее по которому исполнитель должен запустить (а скорее всего просто проконтролировать, что все работает) второй скрипт и найти следующего исполнителя.

    Еще через год второй скипт выдаст второй группе исполнителей ТЗ на развертывание третьего скрипта, а также уведомление первой группе исполнителей (чтобы они проконтролировали работу выбранного ими исполнителя, мало ли что).

    Все повторяется в цикле каждый год. Этим мы защищаемся от необратимых перемен, которые могли бы случиться через 15 лет. Плюс количество исполнителей растет в прогрессии, что повышает надежность.

    Частью задания для исполнителей может быть отслеживание ситуации у ребенка (где он, куда переехал, не сменил ли фамилию). Отслеживание должно быть не явным. Таким, чтобы о ребенке исполнители не знали.

    Наблюдение может быть за матерью, за школьными учителями и другими людьми, которые имеют контакт с ребенком. Т.к. круг этих людей заранее неизвестен, есть некая сложность в том, чтобы каждый год их находить.

    Каждый новый исполнитель будет обладать все большей информацией, но никогда не будет знать все.
    Важна и обратная связь к уже отработавшим исполнителям - должен поддерживаться их интерес и любопытство. Они страхуют этапы, которые будут после них.

    По возможности стоит исключить материальное вознаграждение исполнителей.

    Вообще, это очень крутая задача на стыке технологии и социальной инженерии.
    Ответ написан
    Комментировать
  • Планировщик дел по следующим критериям?

    Stac
    @Stac
    Порекламирую себя: видео про автопланировщик задач.

    Т.е. основная мысль моего ответа: хотите чего-то особенного, надо разрабатывать :).
    Ответ написан
    Комментировать
  • В какой момент пора использовать ООП?

    Stac
    @Stac
    Я работаю примерно также как вы - свой фреймворк, все отлажено и т.п. Несколько лет бьюсь в ООП, пытаюсь понять, где бы применить. Там, где применил, резко возрастала сложность.

    Единственное, где пока ООП для меня показался логичен, понятен и обязателен - командная разработка или разработка модуля для готового чужого проекта. В этом случае я просто поставляю свой класс или набор классов в своем пространстве имен, которые решают бизнес задачу, возможно предоставляя API.
    Ответ написан
    Комментировать
  • Есть ли сервис антиспама по API?

    Stac
    @Stac
    Akismet обычно ассоциируется с Wordpress, но работает не только с ним.
    Ответ написан
    Комментировать
  • Как вести статистику входящих и исходящих писем?

    Stac
    @Stac
    У Яндекс.Почты есть API, которое поможет решить кусок задачи: https://tech.yandex.ru/pdd/doc/reference/email-cou...

    Если получится, то будет повод накатать запрос в Яндекс на расширение функционала API.
    Ответ написан
    Комментировать
  • Что бы вы посоветовали будущему фрилансеру?

    Stac
    @Stac
    16 лет это рано для того, что фокусироваться на фрилансе. Личность не конца сформирована, в этом возрасте очень важно поддерживать формальные деловые связи с другими людьми (т.е. просто друзей недостаточно).

    1) Учиться-учиться-учиться, читать книги, поступить в университет (не обязательно заканчивать, 3 года должно хватить, но лучше закончить) ==> грамотная речь, в т.ч. письменная и навыки коммуникации, в т.ч. бизнес-коммуникации => навыки продаж (фриланс это всегда продажи себя как лучшего исполнителя).
    2) Пойти работать по найму (не в ИТ; работа не должна мешать учебе) => навыки бизнес коммунникации, понимание проблем бизнеса на своей шкуре (фриланс это всегда решение чьих-то чужих бизнес задач)
    3) Пробовать в свободное время делать проекты для себя, друзей, знакомых (бесплатно, но за долю с дохода от проекта) => понимание, что для вас ценно (работа или деньги), понимание ответственности, понимание бесперспективных проектов и бесполезной работы (чтобы потом этого избегать).

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

    Я фрилансю 6 лет (с 29), не работая по найму. Т.е. опыт есть, как положительный, так и отрицательный.
    Ответ написан
    Комментировать
  • Где найти работу по удаленке в 40+ лет?

    Stac
    @Stac
    Есть куча работных сервисов (бирж) на этот случай, например https://www.workle.ru/
    Ответ написан
    Комментировать
  • Http аутентификация работает неправильно, почему?

    Stac
    @Stac
    В дополнение к ответу ozgg:

    1) Не забудьте, что при такой авторизации реализовать logout (выход из системы), а то скоро придется писать второй вопрос тут :)

    Т.к. нет простого способа заставить браузер перестать слать вам логин и пароль при каждом запросе, то факт логаута нужно реализовывать своими силами.

    И учитывать это при логине. Т.е. нужно дополнить условие для поиска пользователя в БД - не только проверять наличие $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], но и проверить вашу переменную хранящую признак, что пользователь разлогинен

    2) Осторожнее с trim. Если у вас запрещены пробелы в логине и пароле, почему они удаляются только с концов?

    3) Если была нажата кнопка "Отмена" лучше делать редирект на какую-то релевантную страницу (главную например). Это из опыта общения с Клиентами.

    4) Вместо заголовка "HTTP/1.1 401 Unauthorized" лучше использовать "Status: 401 Unauthorized". Тоже из опыта. Опыта развертывания на Windows-сервер.
    Ответ написан
    Комментировать
  • Есть ли движок/сервис для граббинга контента?

    Stac
    @Stac
    Иcпользуйте Pocket (мой выбор) или его аналоги (Instapaper, Readability, ...).

    У сервисов есть API, поэтому можно использовать и в качестве "движка".

    umputun разработал Ukeeper, который тоже может пригодиться (принимает ссылку, возвращает контент страницы по e-mail)
    Ответ написан
    Комментировать
  • Какой набор инструментов выбрать для реализации веб-проекта?

    Stac
    @Stac
    PHP, SQLITE

    Для озвученной задачи никакие фреймворки и сервера (кроме вебсервера) не являются необходимыми.
    Сответственно, если их не знаете, то и морочиться не стоит.

    Однако, посмотрите ASP.NET MVC, учитывая ваше знание C# может пригодиться.

    Если цель получить решение, а не реализовать его лично, то обращайтесь.. как раз недавно делал простой чатик "для себя".
    Ответ написан
    Комментировать
  • CRM или Lead Managament для лендингов?

    Stac
    @Stac
    Самопис, конечно, есть.
    Я, например, делал такие для нескольких рекламных агентств-лидогенераторов.

    Нужна некоторая настройка под каждую рекламную кампанию, поэтому "коробочность" пока не достигнута.
    Я продаю и поддерживаю это решение, если что, обращайтесь.

    Деньги берутся на настройку и внедрение: программирование карточки лида, процедур обработки и/или продажи лида, интеграции с внешними системами (CRM, партнерские программы, SMS уведомления, IP-телефония) , специальные отчеты (в коробке только отчет по источникам, статусам и сводный по источникам/статусам).
    Ответ написан
  • Как отправить HTML письмо не программисту?

    Stac
    @Stac
    Функция mail() в PHP прекрасно* отправляет HTML-письма.
    Надо только добавить заголовок ("content-type: text/html; charset=UTF-8").

    Вот пример вызова: $res = @mail($email, $subject, $message, "FROM:" . $from_email . "\nREPLY-TO:" . $reply_to_email . "\ncontent-type: text/html; charset=UTF-8");

    В $message у вас будет HTML-код письма. Это вариант для бедных - ваш скрипт потребует минимальных изменений.

    Но "большие дядьки" делают по-другому. Они шлют т.е. multipart письмо, где есть и текстовая и HTML-версия. Код лля его отправки написать чуть сложнее (у меня это почти 20 строк).
    Но тут помогут уже написанные классы, чудовищные по своему размеру и неудобству (посравнению с простым вызовом mail()), зато пользующиеся всеобщей любовью.

    * - могут быть проблемы с кодировками (в т.ч. кодировкой subject, т.к. для этого есть отдельный алгоритм кодирования) в отдельных почтовых клиентах, типа Lotus Notes.
    Ответ написан
    Комментировать
  • Какие книги по правильной организации удаленной работы можно почитать?

    Stac
    @Stac
    Для полноты картины (сам не читал):
    Ответ написан
    Комментировать
  • В каком направлении двигаться дальше, чтобы стать полноценным PHP разработчиком?

    Stac
    @Stac
    Присоединюсь к aimp-programming.

    PHP класный язык, чтобы копаться в Wordpress и делать всякие плюшки и полезности для Клиентов с фриланса.
    PHP хорошо подходит для прототипирования и прочих задач, которые нужно сделать быстро.

    Есть странные ребята, которые пытатся притащить в PHP всякое из других языков, так в нем появился и развиввается ООП.

    Но вам-то это зачем, если знаете C#?
    1) Изучайте ASP.NET MVC - там все четко, строго и объектно-ориентирвоанно.
    2) Прокачивайте свои навыки бизнес-коммуникаций (деловое пиьмо, публичные выступления, презентации) - и сможете продавать свои знания и навыки Клиентам, большинству из которых плевать на стек и входящие в него технологии, есть лишь бизнес задача, которую надо решить.
    3) Если захочется именно в PHP развиваться - напишите свой фреймворк, CMS на нем и продайте несколько проектов. После этого появится какое-то понимание дальнейших действий.

    p.s. Пример: я недавно делал генератор XLS прайс-листа для сайта на Джумле. Никого особо не смутило, что Джумлу я не знаю, ни как пользователь, ни как разработчик (хотя, я, конечно, предупредил об этом). Главное - решение бизнес-задачи.
    Ответ написан
    1 комментарий