Задать вопрос
  • Как сверстать такое (фото)?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Как добавить и реализовать эти кнопки для поля поиска?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    скорее всего тупо ссылки по типу <a href="/search?q=iPhone">iPhone</a>
    Ответ написан
    1 комментарий
  • Проблема миграции базы данных с mysql 8 на mariaDB 10?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Как уже написал Akina, полной совместимости между этими версиями нет, но основной синтаксис без каких-то хитропопых движух по типу хранимок и кастомных/новомодных типов полей вполне совместим.
    Что можно попробовать:
    1) Добавить в начале дампа игнор внешних ключей, судя по всему у вас в транзакции происходит фигня, но что конкретно ее вызывает не видно, возможно таблица требует ссылки на внешний ключ, который еще отсутствует. В конце стоит снова включить контроль ключей. DISABLE KEYS и SET FOREIGN_KEY_CHECKS=0; в начале, и соответственно включить в конце дампа.
    2) Если база большая, а инсерты в дампе не разбиты по строкам на адекватные блоки, можно попробовать убрать транзакции и посмотреть что конкретно не нравится системе. Возможно надо разбить инсерты на более мелкие блоки вставки, а возможно есть действительно несовместимый синтаксис.
    3) Если такие танцы не помогают - костыли с методом описанным Akina, через csv и потом ручками связи/ключи/индексы/хранимки.

    UPD: Народ говорит что может помочь принудительное указание типа движка таблиц и предварительная конвертация:
    The tables must be InnoDB. After converting the tables to InnoDB, the database could be migrated
    Ответ написан
  • PHP - как показать изображения в браузере из папки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я хочу вынести ее из публичной папки.
    Зачем? Есть какая-то особенная необходимость? По логике все файлы сайта должны находиться в одной папке проекта, а файлы видимые из веба в публичной папке проекта. В некоторых случаях, например когда эти файлы не должны отдаваться без какого-то уровня доступа, их выносят выше публичной папки, таким образом закрывая от прямого доступа из веб. Далее доступ осуществляется через пхп, конкретная реализация сильно зависит от задач и имеющегося кода/фреймворка. Простейший вариант - имя файла читается как параметр из урл, далее делается readfile() из этой папки с файлами, предварительно отдаются заголовки, указывающие что это файл изображения. Хотя без понимания "зачем" реализация "как" это тыканье пальцем в небо. Может вам симлинк тупо подойдет...

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    по итогу генерируется фото футболки с теми параметрами, которые он выбрал?
    Называется "влажные фантазии". Обычно на маркетплейсах за подобный функционал отвечает фильтрация, а не меню. Никакой генерации обычно не используется, просто фото всех доступных вариантов есть в виде картинок, а параметры перечислены в бд.

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Кеш именно статики, после обновление картинок уловно в public/assets в формате PNG, они упорно не отображаются даже при прямой запросе изображения в строке браузера.
    Кэш "статики" это чисто в вашем браузере. На другой машине все ваши картинки будут отображаться нормально при первом заходе, но так же перестанут подгружаться измененные при последующих заходах. Никакие "кэши ларавела" конечно же за это не отвечают.

    Как решения прописывать каждый раз новые пути и название картинок - но не оч удобно при разработки визуала.
    Можете использовать версию, что-то типа <img src="logo.png?<?=VER?>">, естественно надо будет менять эту константу при изменении картинок, хотя это и некоторого рода костыли. Правильным решением будет переход на сборку фронтенда сборщиками, но так тоже будет работать.
    Ответ написан
    Комментировать
  • Как ОТВЕТИТЬ на письмо через PHPMailer?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для этого в письмо-ответ надо добавить заголовок In-Reply-To с указанием значения заголовка Message-Id оригинального письма. В заголовок References ответа надо скопировать все ID из заголовка References оригинала и дописать после пробела значение заголовка Message-Id оригинального письма.

    В вашем коде я не вижу как вы получаете $message_id, который должен быть вытащен из оригинального письма, соответственно скорее всего отсутствие указание на изначальное письмо не позволяет определить к какой цепочке относится ответ.
    Ответ написан
  • Как установить PHP в режиме отладки под Ubuntu?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но при попытке запустить этот же скрипт из командной строки я получаю ошибку о том, что расширение pdo_mysql.so не может быть загружено.
    Для cli и для "веба" разные php.ini, в которых естественно включены разные расширения.

    php --ini для cli
    phpinfo() для веба
    Ответ написан
    5 комментариев
  • В чем ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $params собственно нужен для биндинга, чтобы не вставлять данные прямо в запрос, так как это чревато инъекциями. По этому дебильный совет "просто поменяй на $stmt->execute();" желательно проигнорировать.

    2) Вместо переменных нужно вставить плейсхолдеры, именованные или безымянные не особо важно. Естественно количество плейсхолдеров должно совпадать с количеством элементов в массиве.

    3) Даже в таком виде как у вас запрос работать не будет, так как строковые переменные в рамках запроса должны быть в кавычках.

    4) WHERE $email что? Вы вообще понимаете что и для чего пишете? Просто переведя на русский "где емэйл" не кажется вам слегка странной конструкцией? Просто загляните в документацию SQL где описывается WHERE.
    Ответ написан
    Комментировать
  • Есть ли смысл перенести Mysql на другой сервер для ускорения сайта?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    В основном, видимо, нагружают они.
    Профилирование?
    Ответ написан
    2 комментария
  • Ошибка при вызове окна сохранения, как решить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Судя по скрину, у вас сначала выводится дофига контента, а затем вы пытаетесь отправить файл. Так как все заголовки уже отправлены, естественно никакие данные в заголовок посреди вывода контента уже не добавятся (о чем собственно и написано в варнинге).
    Ответ написан
    Комментировать
  • Как сделать возможность добавления картинки товара, загружая её перед этим в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Есть ли какие-нибудь хорошие файловые хранилище с которыми удобно и практично работать?
    Файловая система. Это самый удобный и практичный метод хранения мультимедийных файлов. В зависимости от ваших возможностей, компетенций и используемых технологий, вы можете использовать как локальную ФС, так и любое облачное хранилище через соответствующее АПИ, используя драйверы доступа к файлам, например как это реализовано в Ларавел.
    Ответ написан
    Комментировать
  • Почему при попытке получить xml данные через file_get_contents() получаю timeout?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) попробовать скачать файл меньшего размера, если проблема в размере - смотреть настройки сервера, вполне возможно что это проблема апача/нжинкса/пхп на максимальный размер какого-нибудь буфера/файла (у меня он кстати не открывается до конца, хотя возможно проблема в чем-то другом). Возможно запрос через браузер выдает вам файл нормально, так как у вас он вытаскивает файл вообще из локального кеша, и вы не видите реальной проблемы в браузере.

    2) Проверить не слетели ли пермишны с файлов/папок (такое иногда бывает на хостинге) и условный пых теперь не имеет доступа к этому файлу. Тут может быть нюанс с настройкой сервера, когда локальный домен запрашивается по серому внутреннему айпи, опять же - надо смотреть настройки, например проверить лукап с сервера на домен, не выдает ли он что-то типа 192.168.10.55 .

    3) Проверить сам код, возможно он тупо зависает с каким-то бесконечным циклом и падает по таймауту... Можно вместо вывода в нем прям писать в файл и проверить все ли ок.
    Ответ написан
    Комментировать
  • Ошибки на странице после деплоя проекта на Laravel?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    {{isset($item->quantity) ? $item->quantity : '0'}}

    Единственное что могу предполагать это не совместимость версии и правил валидации кода PHP.

    APP_ENV=production 
    APP_DEBUG=false

    Плюс на локальной машине скорее всего отключен вывод варнингов.
    Ответ написан
    5 комментариев
  • Если БД две, то к какой из них будет обращение?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Т.е. я не указываю конкретную БД в запросе. Из какой именно я вытащу данные?
    Выбор бд происходит при создании объекта драйвера бд как обязательный аргумент, соответственно либо вы не выбрали базу и не создали коннект - тогда будет ошибка выполнения, либо база уже выбрана и соответственно даные будут взяты из указанной в драйвере базы.
    Ответ написан
    Комментировать
  • Клики по динамически созданным кнопкам в форме ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    делегирование.
    +$(".form-submit").on("click", ".product__add", function () {
    -$(".product__add").on("click", function () {
    Ответ написан
    Комментировать
  • Почему Laravel 8 перестал выводить ошибки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Перестали выводится ошибки , только 500-я , в логах такие записи
    Скорее всего в .енв вы поменяли окружение с дев на прод. Соответственно ошибки только логируются.

    PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 266240 bytes) in /var/www/lobochkin28/data/www/lobochkin.ru/laravel-blog/vendor/laravel/framework... on line 215, referer: laravel-blog.lobochkin.ru/admin/category
    Скорее всего где-то у вас бесконечный цикл, или бооольшой массив. Смотрите что у вас там происходит.
    Ответ написан
  • Как составить SQL запрос для подставления значения по времени?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) У вас во всех таблицах нарушен принцип уникальности записи. Айди, который должен однозначно идентифицировать запись, у вас означает что угодно кроме уникального айди.
    2) Так как ваш лог не привязан к сущности сообщения через соответствующее отношение, то выборка будет показывать что угодно, кроме того что вам нужно.

    Вывод: идите учите 1, 2 и 3 нормальные формы для начала. Потом нормально создайте таблицы. Потом скорее всего все вопросы сами отпадут, но если нет - вернетесь с нормальным вопросом.
    Ответ написан
    2 комментария
  • Как отследить прямое обращение к картинкам и выполнять php?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Так как вопрос хреново описан, народ накидал кучу абсолютно трешовых решений.
    Вообще я тоже не уверен что нужно автору, но скорее всего подойдет стандартное решение, которое, в силу лени при описании задачи, в условия не вписывается.

    Нжинкс настраивается на переадресацию всех урл с картинкой на единую точку входа для рутируемых приложений а-ля ларавел/зенд и прочие мвц, или на конкретный скрипт в случае наколеночных решений. Далее, по данному адресу отрабатывает скрипт, проверяя все что можно: реферер, сессию, аксепт и тд, после чего выполняете нужный скрипт, а картинка отдается через readfile() с соответствующими заголовками. Или, как предложил Михаил Ливач, настраиваете внутренний редирект в нжинксе и делаете X-Accel-Redirect.
    Ответ написан
    Комментировать
  • Почему шаблон Blade выдает ошибку Undefined variable $decryptedPassword?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    -@if($decryptedPassword)
    +@isset($decryptedPassword)
    Ответ написан
    Комментировать