Илья Folg, Это не ошибка, а предупреждение. Вам сообщают что эти функции нежелательно использовать, они устаревшие, вместо этого надо использовать PDO, если бы вы реализовали всё правильно, через API движка OpenCart, то этой проблемы бы не было.
Соответственно, либо переделайте рекомендуемым образом, либо отключите отображение предупреждений.
Илья Folg, так не должно быть, но это не должно вызывать ошибку исполнения, это ошибка использования. В OpenCart код разделен на модель, отображение и контроллер (MVC). Работа с базой данных вынесена в модель, контроллер вызывает модель, формирует структуру для отображения и передает ее в него. То есть в отображении не должно быть кода отвечающего за взаимодействие с БД, там должен быть только код отвечающий за отображение и форматирование.
Кроме того, в OpenCart есть интерфейс для работы с БД, никаких mysql_query вообще быть не должно.
То есть вы неправильно используете OpenCart, хотя это и не связано напрямую с ошибкой.
Не нужно выкладывать неформатированные листинги. У вас ошибка написано в 48 строке, смотрите что передается там в mysql_query().
JhaoDa, они постоянно актуализируют перевод. Можете порекомендовать сайт с более актуальным переводом? На офф сайт ссылаться не хочу, для многих новичков разобраться на русском проблема, остальные прекрасно понимают что по свежим версиям надо смотреть аналогичный раздел в офф доке.
Борис Белов, чтобы сделать поиск сперва все распарсить надо, составить индекс артикулов и потом по нему поискать. Или парсить подряд пока не найдется запись с нужным айди. Это все не эффективно, если критична скорость и нагрузка или большие объемы. В этом случае вам нужно использовать СУБД, распарсить XML и поместить данные в БД, для быстрых выборок.
ilovemaryjane, в вашем варианте описана полная выборка с последующей фильтрацией на серверной стороне. Правильно оставить выборку целиком на совести БД, это эффективный способ, поскольку выборка по такому условию очень простая и не создаст никаких проблем с производительностью.
Попробуйте провести замеры, чтобы в этом убедиться. Добавьте индекс для поля PublishAt.
Еще был предложен вариант с кроном, но заметьте, что там всё равно будет дополнительное условие для выборки, хоть и немного более простое, но добавляется необходимость в кроне и могут возникнуть проблемы в случае если по какой то причине крон не отработал.
Artem0071, как я и сказал обработать request до контроллера, в сервис провайдере или в middleware и поместить значение в какое то хранилище, самое элементарное в конфиг.
Соответственно, либо переделайте рекомендуемым образом, либо отключите отображение предупреждений.