Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Здравствуйте, помогите найти ошибку в коде, нужно вывести 4 случайных товара с изображениями, получаю массив где кроме четырех пунктов без изображений, содержатся ещё куча только с изображениями без других данных. Код:

$this->db->query('SELECT id FROM s_products ORDER BY RAND() LIMIT 4');
$rand_ids = $this->db->results('id');

// Выбираем эти товары
$rnd_products = $this->products->get_products(array('id'=>$rand_ids));
$images = $this->products->get_images(array('product_id'=>$rand_ids));
foreach($images as $image) {
$rnd_products[$image->product_id]->images[] = $image;
}
foreach($rnd_products as $product)
{
if(isset($product->images[0]))
$product->image = $product->images[0];
}

// Передаём в шаблон
$this->design->assign('rnd_products', $rnd_products);
Ссылка на сообщение
Поделиться на другие сайты

$rnd_products[$image->product_id]
Массив товаров у вас не ассоциативный, индекс массива не является id товара

Ссылка на сообщение
Поделиться на другие сайты

Точно! Вот так заработало:
$this->db->query('SELECT id FROM s_products ORDER BY RAND() LIMIT 4');
$rnd_ids = $this->db->results('id');
foreach ($this->products->get_products(array('id'=>$rnd_ids)) as $product) {
$rnd_products[$product->id] = $product;
}
$variants = $this->variants->get_variants(array('product_id'=>$rnd_ids));
foreach($variants as $variant) {
$rnd_products[$variant->product_id]->variants[] = $variant;
}
$images = $this->products->get_images(array('product_id'=>$rnd_ids));
foreach($images as $image) {
$rnd_products[$image->product_id]->images[] = $image;
}
foreach($rnd_products as $product) {
if(isset($product->variants[0]))
$product->variant = $product->variants[0];
if(isset($product->images[0]))
$product->image = $product->images[0];
}

$this->design->assign('rnd_products', $rnd_products);

Проверьте правильность подхода

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

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

Ссылка на сообщение
Поделиться на другие сайты
  • 6 месяцев спустя...
  • 2 недели спустя...
  • 2 месяца спустя...
  • 3 месяца спустя...

Подскажите пожалуйста куда вставлять сей код? Нужно в левом столбце выводить рандомно по 1 товару. Спасибо!

$this->db->query('SELECT id FROM s_products ORDER BY RAND() LIMIT 4');$rnd_ids = $this->db->results('id');foreach ($this->products->get_products(array('id'=>$rnd_ids)) as $product) {$rnd_products[$product->id] = $product;}$variants = $this->variants->get_variants(array('product_id'=>$rnd_ids));foreach($variants as $variant) {$rnd_products[$variant->product_id]->variants[] = $variant;}$images = $this->products->get_images(array('product_id'=>$rnd_ids));foreach($images as $image) {$rnd_products[$image->product_id]->images[] = $image;}foreach($rnd_products as $product) {if(isset($product->variants[0]))$product->variant = $product->variants[0];if(isset($product->images[0]))$product->image = $product->images[0];}$this->design->assign('rnd_products', $rnd_products);
Ссылка на сообщение
Поделиться на другие сайты
  • 6 месяцев спустя...

 

Подскажите пожалуйста куда вставлять сей код? Нужно в левом столбце выводить рандомно по 1 товару. Спасибо!

 

$this->db->query('SELECT id FROM s_products ORDER BY RAND() LIMIT 4');
$rnd_ids = $this->db->results('id');
foreach ($this->products->get_products(array('id'=>$rnd_ids)) as $product) {
$rnd_products[$product->id] = $product;
}
$variants = $this->variants->get_variants(array('product_id'=>$rnd_ids));
foreach($variants as $variant) {
$rnd_products[$variant->product_id]->variants[] = $variant;
}
$images = $this->products->get_images(array('product_id'=>$rnd_ids));
foreach($images as $image) {
$rnd_products[$image->product_id]->images[] = $image;
}
foreach($rnd_products as $product) {
if(isset($product->variants[0]))
$product->variant = $product->variants[0];
if(isset($product->images[0]))
$product->image = $product->images[0];
}

$this->design->assign('rnd_products', $rnd_products);

Все вам "нищебродам" подсказать нужно, заплатите и вам сделают. 

Навеяно вашим же комментарием.

Ссылка на сообщение
Поделиться на другие сайты

Все вам "нищебродам" подсказать нужно, заплатите и вам сделают. 

Навеяно вашим же комментарием.

 

Одно дело целый функционал на халяву заполучить, другое дело готовый код подсказать куда вставить как бЭ разные вещи если что! P.S Да и сам я потом разобрался что да как!  ;)

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...