помогите разобраться random

Тема в разделе "PHP", создана пользователем droit74, 3 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    есть таблица с вопросами одно из полей которое 'id'
    нужно выбрать случайным образом из этой таблице 5 вопросов так чтобы они не повторялись.
    зы первый рас работаю с random в php :confused:
     
  2. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    354
    Симпатии:
    42
    для базы мускул так
    SELECT * FROM Table_Vopros ORDER BY RAND() LIMIT 5;
     
  3. rostisslav

    rostisslav

    Регистр.:
    27 мар 2007
    Сообщения:
    361
    Симпатии:
    136
    тут у него может быть трабл! число RAND может быть Больше чем ID ! в следствии чего ОШИбка либо Ограничивать Rand-значение, чтоб было не более чем Id в базе!
    ==========================
    $query = "select count(*) as count from data";
    $result = mysql_query($query, $link) or die(mysql_error());
    $row=mysql_fetch_object($result);
    $total = $row->count; // получаем число записей


    $offset = rand(0, $total); // генерим случайное число, не более чем кол-во записей!
    ================================================
    А вот теперь мы 100 процентно получим случайнуую записать по id которая есть в базе!
     
  4. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    посмотрите здесь
    http://habrahabr.ru/blogs/mysql/54176/
    есть готовые примеры + общие "оценки" производительности и рациональности той или иной реализации...

    и как видно из первого поста, решение:
    PHP:
    SELECT FROM Table_Vopros ORDER BY RAND() LIMIT 5;
    является далеко не лучшим
     
  5. softm

    softm Писатель

    Регистр.:
    28 фев 2010
    Сообщения:
    4
    Симпатии:
    0
    SELECT id FROM table ORDER BY rand() LIMIT 5
    Понятно, что записей в таблице должно быть более 5-ти...

    Добавлено через 2 минуты
    Ростислав, Ордер Бай Ранд() - если не работает, это трабл МайсКЛЛ тим, а ни как не юзера. Давать ссылку на документацию? И причем тут ид и ранд()? Оно не взаимосвязано ниразу.
     
Статус темы:
Закрыта.