SQL结果随机循环通过

时间:2011-06-23 00:22:32

标签: php sql random

我有一个包含字段的SQL数据库。我可以通过以下方式获得该领域的所有元素:

      $result=mysql_query($sql);
      while($row=mysql_fetch_array($result)){
         $ftype  =$row['ftype']; //name of field is 'ftype'
         print $ftype}  //do something  

我想在每次打开/刷新页面时打印出一个随机元素。

知道结果是包含我想要的信息的数组,我想随机选择数组的元素。此外,如果数组中有N个元素,我想在第二次再次显示任何元素之前选择所有N个元素。这个过程重演。我知道如何在java或python中编写这样的代码,但我不认为这是我应该去的方式。

我想我需要使用javascript,但我不确定要使用什么技术。

更新

帕特里克的想法似乎正是我所寻找的。我想我会分享我现在拥有的东西,也许你可以建议优化。我希望代码中的意图是显而易见的。

<?
session_start();
if (!isset($_SESSION['count']) || !isset($_SESSION['randomArray'])) {
      $count = 0;
      $randomArray = array();
      $sql="SELECT youtubeurl FROM Foodlist";
      $result=mysql_query($sql);
      while($row=mysql_fetch_array($result)){
           array_push($randomArray,$row['youtubeurl']);
      }
      shuffle($randomArray);
      $_SESSION['randomArray'] = $randomArray;
      $_SESSION['count'] = $count; 
} elseif ($_SESSION['count'] >= sizeof($_SESSION['randomArray'])){
   $_SESSION['count'] = 0;
   $randomArray = $_SESSION['randomArray'];
   shuffle($randomArray);
   $_SESSION['randomArray'] = $randomArray;
} else{
   $randomArray = $_SESSION['randomArray'];
   $count = $_SESSION['count'];
   echo $randomArray[$count];
   $_SESSION['count']++;
}
?>

2 个答案:

答案 0 :(得分:1)

您可以在没有Javascript的情况下执行此操作,但是您需要打开/维护会话。

伪代码:

data = data_from_mysql()

choice = random.choice(data, exclude = SESSION['choices'])
SESSION['choices'].append(choice)

print choice

if len(SESSION['choices']) == len(data):
    SESSION['choices'] = []

答案 1 :(得分:0)

如果你想要一个随机的结果,让dbms来处理它。将其添加到SQL查询的底部。

ORDER BY RAND()
LIMIT 1