Иногда бывает нужно выбрать случайное значение из базы данных SQL. Как это сделать я постараюсь описать в этой статье.
Итак для начала нам понадобится таблица, содержащая n-ое количество ячеек. Ну и естественно функция, генерирующая случайные числа, а именно: mt_rand($num,$ to), где $from – начало ряда для случайных чисел, $to – конечно число ряда. Обычно, для нумерации ячеек вводится столбец id – уникальный столбец с параметром AUTO_INCREMENT.
Первое, что необходимо сделать – определить интервал доступных id, ведь бывает, что нумерация начинается далеко не с 1:
$query1 = mysql_query(“SELECT * FROM table ORDER BY id ASC LIMIT 1”); $query2 = mysql_query(“SELECT * FROM table ORDER BY id DESC LIMIT 1”);
$query1 вернет первую строку таблицы, $query2 – последнюю.
дальше разбиваем на массивы:
$first_id = mysql_fetch_assoc($query1); $last_id = mysql_fetch_assoc($query2);
Получаем случайный идентификатор id:
$rand_id = mt_rand($first_id[‘id’],$last_id[‘id’]);
И делаем выборку из таблицы:
$query3 = mysql_query (“SELCET * FROM table WHERE id = ‘$rand_id’”);
Но это еще не все, а если окажется, что поля с id = $rand_id нет, такое вполне может случиться, тогда нужно поставить условие, чтобы запрос не вернул 0:
if (mysql_num_rows($query3) == 0) { $rand_id = mt_rand($first_id[‘id’],$last_id[‘id’]); $query3 = mysql_query (“SELCET * FROM table WHERE id = ‘$rand_id’”); } else { /*Выводим полученный результат*/ }
И наслаждаемся работой скрипта.
© 2010-2025 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна