2012-01-06 4 views
-1

Я занимался поисковой системой, и я пытаюсь запустить оператор while и выполнить эхо-результаты в случайном порядке. Вот код, который у меня есть сейчас.Рандомизированное сообщение с заказом

if ($numrows > 0) { 

while ($row = mysql_fetch_assoc($query)) { 

    $id = $row['id']; 
    $title = $row['title']; 
    $description = $row['description']; 
    $keywords = $row['keywords']; 
    $link = $row['link']; 

    echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p></div>"; 



} 

Мне нужно, чтобы оператор while в теории запускал и отображал результаты полностью случайным образом.

В любом случае это можно сделать?

Спасибо!

+0

почему вы не просто сортировать ваши результаты MySQL случайным с Order By Random собственности? – Rooster

+0

Он захватывает результаты по ключевому слову в том порядке, в котором находится база данных, я не могу повторно перетасовывать базу данных каждый раз при запуске скрипта. – HarryBeasant

+0

afuzzyllama, nice one, удаляющий ваш комментарий. – HarryBeasant

ответ

5

Вы можете сделать order by rand() в вашем запросе, чтобы заказать результаты в случайном порядке.

+0

Это мой запрос $ query = "SELECT * FROM search WHERE"; Как бы я структурировал это? – HarryBeasant

+0

'$ query =" select * from search where something = something order by rand() ";' – Eric

+0

Получил работу, спасибо! – HarryBeasant

0

Я не думаю, что вы можете сделать это в том же заявлении. Я думаю, что вы должны поместить результаты запроса в список, а затем, используя его размер, вы можете использовать генератор случайных чисел и извлекать из него элементы, используя их индексы.

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

0
  1. Используйте Foreach вместо некоторого времени
  2. Подсчитайте свои результаты, прежде чем руки.
  3. создать массив с ints до подсчета ваших результатов.
  4. рандомизируйте этот массив с помощью собственной php-функции.
  5. при выполнении вашего foreach ($ k => $ v kind) используйте следующее число в массиве, который вы скремблировали, а затем отменили его.
+0

, но я согласен с Эриком. но если вам нужно было сделать это без доступа к mysql, это подход. – Rooster

0

Кроме того, используя SELECT * FROM search WHERE row1='1' ORDER BY rand()

Вы могли:

while ($row = mysql_fetch_assoc($query)) { 
    $data[] = $row; 
} 
shuffle($data); 

foreach($row as $k=>$v) { 
    $id = $row['id']; 
    $title = $row['title']; 
    $description = $row['description']; 
    $keywords = $row['keywords']; 
    $link = $row['link']; 

    echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p</div>"; 
} 
Смежные вопросы