[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Случайный вывод через php
evgpolo
Здравствуйте!

Меня интересует следующее. На сайте имеется (например) 50 моделей Mercedes. На главной странице хочу, чтобы отображались случайные названия и краткие описания 10 моделей в виде таблицы в 5 строк (по 2 в каждую) и чтобы было без повторений. Подскажите, пожалуйста, как это сделать?
И еще. Как сделать все то же самое, но чтобы отображались 10 самых посещаемых, а не 10 случайных моделей?

Заранее спасибо!



Спустя 1 час, 8 минут, 51 секунда (22.10.2009 - 12:56) Raito-kun написал(а):
делаете полную выборку из базы моделей, далее я построил рекурсивный алгоритм отбора десяти неповторяющихся чисел из пятидесяти в массив

PHP
<?php

  function SmartRandom
($massive, $i)
  {
       $result = mt_rand(1, 50);
       for($j = 0; $j < $i; $j++)
       {
          if($massive[$j] == $result)
          {
                $result = SmartRandom($massive, $i);
          }
       }
      return $result;
  }

  $final_massive = array();

  for($i = 0; $i < 10; $i++)
  {
    $final_massive[$i] = SmartRandom($final_massive, $i);
    echo $final_massive[$i]. " \n";
  }


$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, по запросам и работе с бд не спец) зато с программированием все ок smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.