Бывают ситуации, когда требуется выбрать из базы данных, случайные изображения или какую-либо другую информацию. Делается это очень просто с помощью функции rand в запросе к полю, которое нужно выбрать. То есть у нас имеется некое поле, допустим img и мы хотим выбрать все случайные фотографии по очереди, для этого мы используем в запросе функцию rand php и mysql.
Создаем базу данных random_images с привилегиями: имя пользователя - "root", пароль - "".
Далее создаем таблицу random_images в которой будут два поля id и img. В поле img будут храниться изображения.
-- -- Table structure for table `random_images` -- CREATE TABLE IF NOT EXISTS `random_images` ( `id` int(10) NOT NULL AUTO_INCREMENT, `img` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ; -- -- Dumping data for table `random_images` -- INSERT INTO `random_images` (`id`, `img`) VALUES (1, 'audi_q7_1.jpg'), (2, 'audi_cabriolet.jpg'), (3, 'ford_focus_1.jpg'), (4, 'ford_focus_2.jpg'), (5, 'audi_q7_2.jpg'), (6, 'audi_q7_3.jpg'), (7, 'ford_gt.jpg');
Устанавливаем соединение с базой данных.
// указываем параметры для подключения к MySQL $host='localhost'; // имя хоста $database='random_images'; // имя базы данных $user='root'; // имя пользователя $pass=''; // пароль пользователя // подключаемся к MySQL $db = mysql_connect($host, $user, $pass) or die("Нет соединения с MySQL!"); mysql_select_db($database) or die("Не могу подключиться к базе данных!");
Реализуем запрос к таблице random_images с применением функции rand. Очень важный момент связанный с limit 1, таким образом мы выбираем все случайные изображения из поля img по одному.
// Выполняем функцию rand() для выборки случайного изображения $sql=mysql_query("select * from random_images order by rand() limit 1"); $res=mysql_fetch_array($sql); do { echo "<img src='images/$res[img]'/>"; } while($res = mysql_fetch_array($sql));
Таким образом, сегодня мы смогли рассмотреть полноценное применение функции rand php и mysql. Данный материал был рассчитан прежде всего для новичков, но если возникнут вопросы, жду Ваших комментариев. Спасибо за внимание!