使用PHP和MongoDB获取随机记录并以特定格式显示
我有一个数据库,有100个问题和多个答案。我想以测验的形式显示,每次随机选择20个问题。我在下面做过类似的事情使用PHP和MongoDB获取随机记录并以特定格式显示,php,mongodb,random,Php,Mongodb,Random,我有一个数据库,有100个问题和多个答案。我想以测验的形式显示,每次随机选择20个问题。我在下面做过类似的事情 $m=new MongoClient(); $db=$m->mydb; $c=$db->quiz; $cursor = $c->find() $n = 20; foreach ($cursor as $obj) { $links=array('$obj["question"]<br&
$m=new MongoClient();
$db=$m->mydb;
$c=$db->quiz;
$cursor = $c->find()
$n = 20;
foreach ($cursor as $obj) {
$links=array('$obj["question"]<br><br>
<input type="radio" name="q1" value="$obj["ch1"]"> $obj["ch1"]<br>
<input type="radio" name="q1" value="$obj["ch2"]"> $obj["ch2"]<br>
<input type="radio" name="q1" value="$obj[ch3"]"> $obj["ch3"]</p>');
$rand_keys = array_rand($links, $n);
echo "<center>". "<br><table><tr><td>";
echo "1. ". $links[$rand_keys[0]] . "<br>";
echo "</td></tr><tr><td>";
echo "2. ".$links[$rand_keys[1]] . "<br>";
echo "</td></tr><tr><td>";
echo "3. ". $links[$rand_keys[2]] . "<br>";
echo "</td></tr><tr><td>";
}
$m=newmongoclient();
$db=$m->mydb;
$c=$db->测验;
$cursor=$c->find()
$n=20;
foreach($cursor作为$obj){
$links=数组('$obj[“问题”]
$obj[“ch1”]
$obj[“ch2”]
好的,考虑到其他不重复的问题,我建议您单独学习php的基础知识,并尝试迭代硬编码的嵌套数组以打印预期的输出
因此,问题中的代码存在一些问题:
- 它不会引出随机问题
- 它不打印任何内容,只向
链接数组添加一个长字符串。请学习
- 没有迭代答案的循环,它根本不是有效的php代码
工作代码(再次考虑文档结构)可能如下所示:
foreach ($cursor as $obj) {
echo $obj["question"];
foreach($obj["answers"] as $key=>$answer) {
echo '<input type="radio" name="' . $key . '" value="'.$answer.'">';
}
}
foreach($cursor作为$obj){
echo$obj[“问题”];
foreach($obj[“answers”]作为$key=>$answer){
回声';
}
}
可能重复的@AlexBlex我不确定它是否重复。@Puneeth,您使用哪个版本的MongoDB?@ConstantinGuay,2.6.11。@Puneeth ok,所以您不能使用MongoDB 3.2的新功能。在没有PHP的情况下,从数据库中获取随机值的方法是添加随机项。您可以添加一个字段'random'=>rand(110000)
(取决于您将拥有的文档数量)然后,在你的查询中,你也要求一个随机值。我已经编辑了随机打印的代码。现在你能给我一些有用的答案吗?请记住这项工作没有for循环。可以做些什么使它工作。没有Puneeth。显然我不能。我放弃了。如果是这样,为什么这项工作不起作用。echo“”;请记住没有嵌套记录,因此,访问obj[ch1]。