Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод похожих товаров / 3 сообщений из 3, страница 1 из 1
18.09.2013, 07:40:06
    #38399552
jdeuterium
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод похожих товаров
Есть задумка сделать вывод похожих товаров, но проблема в том что в базе много записей, и со временем часть строк была удалена и много товаров добавлено (авто инкремент показывает 39К записей, а на деле 10К записей)

надо вывести 5 соседних товаров id+5, но может оказаться что таких id не будет и тогда товары выведутся не правильно

так же проблема с последними записями в категории, если в категории 100 товаров, то при выборе 98, соседними надо вывести 95, 96, 97, 99, 100

я сделал вывод пяти случайных записей, но заказчику надо именно статические ссылки
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$row_count = mysql_result(mysql_query("SELECT COUNT(*) FROM modx_catalog WHERE (`category`='" . mysql_real_escape_string($row['category']) . "');"), 0);
$query = array();
while (count($query) <= 4) {
    $query[] = "(SELECT * FROM modx_catalog WHERE (`category`='" . mysql_real_escape_string($row['category']) . "') LIMIT ".rand(0, $row_count).", 1)";
}
$query = implode(' UNION ', $query);
$result = mysql_query($query);
while ($rw = $this->modx->db->getRow($result)):
    if ($this->snippet_mode) 
        $rw['link'] = $this->Link(array('rowid'=>$rw['id']));
    $this->rws[] = $rw;
endwhile;
foreach($this->rws as $rw):
$url='<a href="'.$rw['link'].'" title="подробнее о товаре" target="_blank">'.$rw['name'].'</a><br>';
$var=str_replace("0?","product?",$url);
echo $var;
endforeach;


может кто сталкивался с подобной проблемой? или у кого есть идеи как лучше организовать алгоритм
...
Рейтинг: 0 / 0
18.09.2013, 08:58:12
    #38399574
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод похожих товаров
jdeuteriumможет кто сталкивался с подобной проблемой?
Ну почему все так убеждены в исключительности и оригинальности своей проблемы?

FAQ: Нумерация строк и другие вопросы про использование переменных - читать до просветления.
...
Рейтинг: 0 / 0
18.09.2013, 10:13:12
    #38399681
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод похожих товаров
Как-то так (насколько я понял задачу) :
Код: sql
1.
2.
3.
4.
5.
6.
SELECT * FROM (
  SELECT * FROM modx_catalog WHERE ... AND id>98 ORDER BY id LIMIT 5
  UNION ALL
  SELECT * FROM modx_catalog WHERE ... AND id<98 ORDER BY id DESC LIMIT 5) t
ORDER BY ABS(98-t.id), id
LIMIT 5
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод похожих товаров / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]