2012-07-04 2 views
0

У меня есть запрос, который извлекает 6 результатов, затем я хочу рандомизировать эти 6 результатов, поэтому всякий раз, когда человек перезагружает страницу, они будут рандомизированы в порядке ,Извлечь результаты mysql, а затем рандомизировать порядок результатов, а затем отобразить один иначе, чем остальные

Из этих 6 результатов я хочу показать их в отдельной коробке, кроме остальных, как бы я это сделал?

Это то, что я имел в виду, получить результаты, использовать в случайном порядке() в массиве, а затем в отдельном окне, что я делаю echo array[0]['info'], то остальное я делаю $i = 2; while($i <= 6); и эхо array[$i]['info'];

Что вы думаете? Есть ли способ лучше?

Мне нужна эта функция, чтобы быть максимально эффективной, чтобы все советы были оценены. Может быть, могут быть отдельные запросы?

+0

Рандомизированные по порядку? – GordonM

+0

Да, я получаю последние 6 результатов, затем я рандомизировал 6 для вывода на дисплей. Это то, что я нашел и чувствую, что я собираюсь сделать. Согласитесь с этим выбором? Http://stackoverflow.com/questions/5201967/print-all-arrary-values-except-first-value-php – Darius

ответ

7

Вы можете получить результаты в рандомизированном порядке из MySQL вместо того, чтобы рандомизировать его в PHP.

SELECT * FROM `table` ORDER BY RAND() LIMIT 6; 

Смотрите также RAND() (приведенные ниже примечания)

Edit:

рандомизации только последние записи х, см this ответ.

+0

Мне нужен последние 6 записей mysql, которые должны быть рандомизированы, а не все из них. – Darius

+1

Добавить 'LIMIT 6'. –

+0

Вы можете изменить запрос, чтобы получить только последние 6 – Ikke

2

вы можете использовать это ...

select * from (select * from table order by date desc limit 6) as t order by rand(); 
1
shuffle($result); 

foreach($result as $key=>$value): 
    if($key): 
     // get first item 
     $firstOne = $value; 
     continue; 
    endif; 
    // echo others 
endforeach; 

затем эхо $ FirstOne в отдельном окне.

Смежные вопросы