Меня интересует следующее. На сайте имеется (например) 50 моделей Mercedes. На главной странице хочу, чтобы отображались случайные названия и краткие описания 10 моделей в виде таблицы в 5 строк (по 2 в каждую) и чтобы было без повторений. Подскажите, пожалуйста, как это сделать?
И еще. Как сделать все то же самое, но чтобы отображались 10 самых посещаемых, а не 10 случайных моделей?
Заранее спасибо!
Спустя 1 час, 8 минут, 51 секунда (22.10.2009 - 12:56) Raito-kun написал(а):
делаете полную выборку из базы моделей, далее я построил рекурсивный алгоритм отбора десяти неповторяющихся чисел из пятидесяти в массив
PHP |
<?php |
$final_massive будет содержать неповторяющиеся 10 чисел из диапазона 1-50. И теперь выдираете из запроса 10 моделей с номерами из массива, их описание и все нужные поля, и выкидываете содержимое на страницу.
Для 10ти самых посещаемых алгоритм простой: опять же делаете запрос полной выборки из бд. Там у вас, как я понимаю есть поле-счетчик посещений. Так вот берете столбец счетчиков для каждой модели(допустим $row['count']), и просто сортируете его по убыванию(тем же пузырьком). Далее выводите на страницу циклом for первые 10 элементов с описаниями.
Спустя 2 часа, 4 минуты, 18 секунд (22.10.2009 - 15:00) sergeiss написал(а):
Raito-kun - это зачем такой изврат???
Цитата (Raito-kun @ 22.10.2009 - 13:56) |
делаете запрос полной выборки из бд. |
Для того и существуют всякие разные возможности выборки данных из БД, чтобы не извращаться с выборкой всех данных, а брать только то, что надо в настоящий момент.
Для выборки 10 случайных надо написать что-то в типа
SQL |
select * from your_table order by rand() limit 10 |
Для выборки 10 самых посещаемых надо сначала сделать поле в БД, где фиксировать эти самые посещения. Например, пусть оно называется visited и значение увеличивается на 1 при каждом просмотре.
Тогда выбираем так:
SQL |
select * from your_table order by visited desc limit 10 |
Спустя 4 часа, 48 минут, 31 секунда (22.10.2009 - 19:49) Raito-kun написал(а):
sergeiss, по запросам и работе с бд не спец) зато с программированием все ок