Не получается вывод недавно просмотренных элементов [закрыто] ⇐ Php
Не получается вывод недавно просмотренных элементов [закрыто]
Я пытаюсь показать недавно просмотренный раздел для этого iam с помощью ajax, когда пользователь нажимает на идентификатор продукта продукта, отправляет его контроллерам ajax и сохраняет в файлах cookie, а после получения ответа stored открывается подробная информация о продукте, на целевой странице я показываю недавно просмотренный раздел, но получаю вывод bool(false), пожалуйста, помогите это исправить
Это значение bool(false)
$products = $landingPage->getProducts1($recentlyViewed); var_dump ($ продукты); для отладки я пытался использовать vardump и получаю
array(2) { [0]=> string(15) "LDMNJ338FGS" [1]=> string(15) "LSBSJ2OG0BB" } string(285) "SELECT p.puid AS ProductID, p. pd_title, p.pd_mrp, p.pd_yourprice, p.created_at КАК создано ИЗ продуктов p ГДЕ p.status = :status И p.puid IN (LDMNJ338FGS,LSBSJ2OG0BB) GROUP BY p.puid ORDER BY RAND() LIMIT 8" массив( 3) { [":status"]=> int(1) [0]=> string(15) "LDMNJ338FGS" [1]=> string(15) "LSBSJ2OG0BB" } bool(false) Аякс
// История просмотров $(document).on('click', '.a_GdEDbR', function (e) { е.preventDefault(); // Получаем атрибут href по нажатой ссылке var csrf_token = $('.csrf_token').val(); var ProductId = $(this).data("предмет"); // Проверяем, является ли ProductId массивом вар productIdArray = Array.isArray(productId)? идентификатор продукта: [идентификатор продукта]; // Отправляем запрос AJAX для обновления истории посещений $.ajax({ тип: «ПОСТ», URL: BASEURL+'srd/просмотр', данные: { csrf_token: csrf_token, puid: productIdArray }, Тип данных: «JSON», успех: функция (данные) { console.log(данные); if (data.success === 'хранится') { window.location.href = BASEURL+'pd?p='+productId; } }, ошибка: функция (ошибка) { console.error('Ошибка обновления истории просмотров:', error); } }); }); сохранение в файлах cookie
//[[ История просмотра ]]// просмотр общедоступной функции() { // Проверка токена CSRF if (isset($_POST['csrf_token']) && CSRFHelper::verifyCsrfToken($_POST['csrf_token'])) { если (isset($_SESSION['cuid'])) { // Существующий пользователь - обработка истории посещений в базе данных $puid = Trim($_POST['puid']); $browse = $this->load_model("Поиск"); $result = $browse->browsingHistory($puid); } еще { if (isset($_POST['puid'])) { $productId = $_POST['puid']; // Предполагаем, что $productId — это массив идентификаторов продуктов // Ваш существующий код для хранения недавно просмотренных товаров в файлах cookie... $recentlyViewed = isset($_COOKIE['recently_viewed']) ? json_decode($_COOKIE['recently_viewed'], true) : []; $recentlyViewed = is_array($recentlyViewed)? $recentlyViewed: [$recentlyViewed]; Еогеасп ($productId как $id) { // Добавляем новый товар в массив, если его там еще нет if (!in_array($id, $recentlyViewed)) { $recentlyViewed[] = $id; } } // Сохраняем недавно просмотренные товары обратно в файл cookie setcookie('recently_viewed', json_encode($recentlyViewed), time() + 365 * 24 * 3600, '/'); // Срок действия истекает через 1 год echo json_encode(["успех" => "сохранено"]); } } } еще { echo json_encode(["ошибка" => «Неверный токен CSRF»]); } } теперь пытаюсь получить (контроллеры)
частная функция недавний просмотр ($landingPage) { $crypt = новый Криптор(); $html = ''; $recentlyViewed = isset($_COOKIE['recently_viewed']) ? json_decode($_COOKIE['recently_viewed'], true) : []; // Если $recentlyViewed не является массивом, преобразуем его в массив $recentlyViewed = is_array($recentlyViewed)? $recentlyViewed: [$recentlyViewed]; var_dump($recentlyViewed); // Получение недавно просмотренных товаров $products = $landingPage->getProducts1($recentlyViewed); var_dump ($ продукты); // Проверяем, является ли $products массивом, прежде чем использовать foreach если (is_array($products)) { $html = ' Недавно просмотренные Узнать больше '; foreach ($products как $item) { $imagesArray = взорвать(',', $item->image); $image = !empty($imagesArray)? $imagesArray[0]: ''; $encryptedProductId = $crypt->encryptId($item->productID); // Замените '#' фактическим URL-адресом продукта или маршрутом. $productUrl = 'pd?p=' . $ зашифрованныйпродуктид; $html .= ' '. htmlspecialchars($item->pd_title) . ' Rs '.number_format($item->pd_yourprice).' Rs '.number_format($item->pd_mrp).' '; } $html .= ' '; вернуть $html; } } модели
публичная функция getProducts1($recentlyViewed) { пытаться { $db = База данных::newInstance(); $sql = 'ВЫБРАТЬ p.puid AS ProductID, п.пд_титул, п.пд_мрп, п.пд_ваша цена, p.created_at AS создан ИЗ продуктов п ГДЕ p.status = :status '; $data = [':статус' => 1]; // Инициализируем массив данных со статусом // Добавляем условие для недавно просмотренных товаров if (!empty($recentlyViewed)) { $puids = implode(',', $recentlyViewed); // Преобразуем массив в строку значений, разделенных запятыми $sql .= 'И p.puid IN ('.$puids.')'; $data = array_merge($data, $recentlyViewed); } $sql .= 'GROUP BY p.puid ORDER BY RAND() LIMIT 8'; // Перемещаем предложения GROUP BY и ORDER BY // Используйте подготовленный оператор, чтобы предотвратить SQL-инъекцию $result = $db->read($sql, $data); if ($result !== false) { вернуть $результат; } еще { throw new Exception('Не удалось получить данные о продукте.'); } } catch (Исключение $e) { // Регистрируем сообщение об исключении или обрабатываем его по мере необходимости error_log('Ошибка в getProducts1:' . $e->getMessage()); вернуть ложь; } }
Я пытаюсь показать недавно просмотренный раздел для этого iam с помощью ajax, когда пользователь нажимает на идентификатор продукта продукта, отправляет его контроллерам ajax и сохраняет в файлах cookie, а после получения ответа stored открывается подробная информация о продукте, на целевой странице я показываю недавно просмотренный раздел, но получаю вывод bool(false), пожалуйста, помогите это исправить
Это значение bool(false)
$products = $landingPage->getProducts1($recentlyViewed); var_dump ($ продукты); для отладки я пытался использовать vardump и получаю
array(2) { [0]=> string(15) "LDMNJ338FGS" [1]=> string(15) "LSBSJ2OG0BB" } string(285) "SELECT p.puid AS ProductID, p. pd_title, p.pd_mrp, p.pd_yourprice, p.created_at КАК создано ИЗ продуктов p ГДЕ p.status = :status И p.puid IN (LDMNJ338FGS,LSBSJ2OG0BB) GROUP BY p.puid ORDER BY RAND() LIMIT 8" массив( 3) { [":status"]=> int(1) [0]=> string(15) "LDMNJ338FGS" [1]=> string(15) "LSBSJ2OG0BB" } bool(false) Аякс
// История просмотров $(document).on('click', '.a_GdEDbR', function (e) { е.preventDefault(); // Получаем атрибут href по нажатой ссылке var csrf_token = $('.csrf_token').val(); var ProductId = $(this).data("предмет"); // Проверяем, является ли ProductId массивом вар productIdArray = Array.isArray(productId)? идентификатор продукта: [идентификатор продукта]; // Отправляем запрос AJAX для обновления истории посещений $.ajax({ тип: «ПОСТ», URL: BASEURL+'srd/просмотр', данные: { csrf_token: csrf_token, puid: productIdArray }, Тип данных: «JSON», успех: функция (данные) { console.log(данные); if (data.success === 'хранится') { window.location.href = BASEURL+'pd?p='+productId; } }, ошибка: функция (ошибка) { console.error('Ошибка обновления истории просмотров:', error); } }); }); сохранение в файлах cookie
//[[ История просмотра ]]// просмотр общедоступной функции() { // Проверка токена CSRF if (isset($_POST['csrf_token']) && CSRFHelper::verifyCsrfToken($_POST['csrf_token'])) { если (isset($_SESSION['cuid'])) { // Существующий пользователь - обработка истории посещений в базе данных $puid = Trim($_POST['puid']); $browse = $this->load_model("Поиск"); $result = $browse->browsingHistory($puid); } еще { if (isset($_POST['puid'])) { $productId = $_POST['puid']; // Предполагаем, что $productId — это массив идентификаторов продуктов // Ваш существующий код для хранения недавно просмотренных товаров в файлах cookie... $recentlyViewed = isset($_COOKIE['recently_viewed']) ? json_decode($_COOKIE['recently_viewed'], true) : []; $recentlyViewed = is_array($recentlyViewed)? $recentlyViewed: [$recentlyViewed]; Еогеасп ($productId как $id) { // Добавляем новый товар в массив, если его там еще нет if (!in_array($id, $recentlyViewed)) { $recentlyViewed[] = $id; } } // Сохраняем недавно просмотренные товары обратно в файл cookie setcookie('recently_viewed', json_encode($recentlyViewed), time() + 365 * 24 * 3600, '/'); // Срок действия истекает через 1 год echo json_encode(["успех" => "сохранено"]); } } } еще { echo json_encode(["ошибка" => «Неверный токен CSRF»]); } } теперь пытаюсь получить (контроллеры)
частная функция недавний просмотр ($landingPage) { $crypt = новый Криптор(); $html = ''; $recentlyViewed = isset($_COOKIE['recently_viewed']) ? json_decode($_COOKIE['recently_viewed'], true) : []; // Если $recentlyViewed не является массивом, преобразуем его в массив $recentlyViewed = is_array($recentlyViewed)? $recentlyViewed: [$recentlyViewed]; var_dump($recentlyViewed); // Получение недавно просмотренных товаров $products = $landingPage->getProducts1($recentlyViewed); var_dump ($ продукты); // Проверяем, является ли $products массивом, прежде чем использовать foreach если (is_array($products)) { $html = ' Недавно просмотренные Узнать больше '; foreach ($products как $item) { $imagesArray = взорвать(',', $item->image); $image = !empty($imagesArray)? $imagesArray[0]: ''; $encryptedProductId = $crypt->encryptId($item->productID); // Замените '#' фактическим URL-адресом продукта или маршрутом. $productUrl = 'pd?p=' . $ зашифрованныйпродуктид; $html .= ' '. htmlspecialchars($item->pd_title) . ' Rs '.number_format($item->pd_yourprice).' Rs '.number_format($item->pd_mrp).' '; } $html .= ' '; вернуть $html; } } модели
публичная функция getProducts1($recentlyViewed) { пытаться { $db = База данных::newInstance(); $sql = 'ВЫБРАТЬ p.puid AS ProductID, п.пд_титул, п.пд_мрп, п.пд_ваша цена, p.created_at AS создан ИЗ продуктов п ГДЕ p.status = :status '; $data = [':статус' => 1]; // Инициализируем массив данных со статусом // Добавляем условие для недавно просмотренных товаров if (!empty($recentlyViewed)) { $puids = implode(',', $recentlyViewed); // Преобразуем массив в строку значений, разделенных запятыми $sql .= 'И p.puid IN ('.$puids.')'; $data = array_merge($data, $recentlyViewed); } $sql .= 'GROUP BY p.puid ORDER BY RAND() LIMIT 8'; // Перемещаем предложения GROUP BY и ORDER BY // Используйте подготовленный оператор, чтобы предотвратить SQL-инъекцию $result = $db->read($sql, $data); if ($result !== false) { вернуть $результат; } еще { throw new Exception('Не удалось получить данные о продукте.'); } } catch (Исключение $e) { // Регистрируем сообщение об исключении или обрабатываем его по мере необходимости error_log('Ошибка в getProducts1:' . $e->getMessage()); вернуть ложь; } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я создал форму на C#, но при выполнении кода вывод получается искаженным [закрыто]
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Я создал форму на C#, но при выполнении кода вывод получается искаженным [закрыто]
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-