Заполнить "С этим товаром покупают"

Статус
В этой теме нельзя размещать новые ответы.

Buyer

Постоялец
Регистрация
5 Апр 2009
Сообщения
55
Реакции
9
Хочу заполнить "С этим товаром покупают". По 5 позиций на каждый товар. База большая 30000 товаров. Руками ни каких сил не хватит. Хочу сделать обработку, чтобы заполнить, но чего-то не очень получилось. Написал следующе
PHP:
$q=mysql_query( "SELECT productID, categoryID FROM `SC_products`  WHERE 1");
     while($r = mysql_fetch_assoc($q))
           {
            $q1=mysql_query( "SELECT productID FROM `SC_products`  WHERE categoryID=".$r['categoryID']." ORDER BY rand() LIMIT 3");
                while($r1 = mysql_fetch_assoc($q1))
           			{
						$q2=mysql_query("INSERT INTO SC_related_items (productID, Owner)".
            	 		"VALUES(".$r1['productID'].",".$r['productID'].")");
                    }
          	}
Вроде текст-то правильный, но при большом количестве товара виснет. rand() вот это слабое место, но без него смысла нет т.к. заполнятся одинаковыми товарами. И еще....а потом при добавлении товара снова такую большую обработку запускать?
Вот не знаю как решить. Есть у кого какие мысли?
 
1. тебе нужно каждому товару из категории добавить другие товары из этой же категории? или любые?
2. при заполнении магазина увеличивается productId в sc_products.
в условие where его добавишь->большую обработку запускать не придётся.
 
1) Да хотелось бы из той же категории, но как ни будь бы сделать.
2) Магазин заполнен уже давно. Работет три года там много чего поудалялсоь и номера давно перемешались.
 
PHP:
$q=mysql_query( "SELECT productID, categoryID FROM `SC_products`  WHERE 1");
     while($r = mysql_fetch_assoc($q))
           {
            $q1=mysql_query( "SELECT productID FROM `SC_products`  WHERE categoryID=".$r['categoryID']." ORDER BY rand() LIMIT 3");
                while($r1 = mysql_fetch_assoc($q1))
           			{
						$q2=mysql_query("INSERT INTO SC_related_items (productID, Owner)".
            	 		"VALUES(".$r1['productID'].",".$r['productID'].")");
                    }
          	}
Отдаю твой код с отредактированным 1-м запросом
PHP:
$total_products=30000;
$limit=1000;
$add_products=3;
function update_related_items($total_products, $limit,$add_products)
{
For ($count=0;$count++;$total_products)
{
    $query1=<<<EOT
SELECT SC_products.productID, categoryID,SC_related_items.Owner
FROM 
SC_products,
SC_related_items
WHERE 
SC_products.productID!=SC_related_items.Owner
EOT;
    q=mysql_query($query1);
    
    while($r = mysql_fetch_assoc($q))
    {
        $query2=<<<EOT
SELECT 
        productID 
FROM 
        SC_products
WHERE
categoryID={$r['categoryID']}
ORDER BY rand() 
LIMIT $add_products;
EOT;
        $q1=mysql_query($query2);
        while($r1 = mysql_fetch_assoc($q1))
        {
            $query3=<<<EOT
INSERT INTO 
SC_related_items 
(
productID, 
Owner
) 
VALUES
(
"{$r1['productID']}",
"{$r['productID']}"
);
EOT;
            $q2=mysql_query($query3};
        };
    };
};
оформимл в функцию,с начала вызови update_related_items(30000, 1000,3) найдите где- добавляется товар, после добавления в базу добавляешь строчку update_related_items(5, 1,3)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху