我有一个包含字段的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']++;
}
?>
答案 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