{% else-1 %}
Подходящий вариант, для выборки случайной строки из таблицы, в том случае если в таблице большое количество записей.

При маленьком количестве, можно использовать запрос:
$query = \"SELECT id_prd, code, title, info, price, image
FROM \".TABLE_PRODUCTS.\"
WHERE 1 ORDER BY RAND() LIMIT 1\";

                        
// Возможно сначала узнать колво записей
$num = mysql_num_rows(mysql_query("SELECT `id` FROM `table`"));

// Потом сгенерировать случайное число в диапазоне 1 - $num
$rnd = rand(1,$num);

// А потом на основе него выбрать запись:
$row = mysql_fetch_row(mysql_query("SELECT * FROM `table` WHERE `id`=".$rnd));
2 60 0
0

Нет фото
Г р и н а * [мошенник] 7.59
• 1 июн 2013, 22:06


реально нафига придумывать то что уже придумано тем более таким способом

0

Нет фото
abler98 * 22.68
• 1 июн 2013, 14:25


Призрак, полностью согласен!
Можно так попробовать:
SELECT pk, data FROM test AS r1 JOIN (SELECT (RAND() * (SELECT MAX(pk) FROM test)) AS id) AS r2 WHERE r1.pk >= r2.id ORDER BY r1.pk ASC LIMIT 1;

0

Нет фото
• 1 июн 2013, 04:16


правдо если таблица более 10-20тыс строк скорость реально упадет...

0

Нет фото
• 1 июн 2013, 04:15


можно проще =)

Select * From TABLE Order By rand() Limit 1;

0

Нет фото
• 1 июн 2013, 04:04


ето хорошо если ид идет по порядку,а вот представте ситуевину когда ид идут 1,2,3,4,15,16,24,27...в таком случае если сгенерируется число 10 например,скрипт выведет пустоту.
[сообщение прошло проверку админом]