【问题标题】:Getting random records and display in particular format using PHP and MongoDB使用 PHP 和 MongoDB 获取随机记录并以特定格式显示
【发布时间】:2016-02-11 09:00:06
【问题描述】:

我有一个包含 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><br> &nbsp;&nbsp;&nbsp;&nbsp;
                                                    <input type="radio" name="q1" value="$obj["ch1"]"> $obj["ch1"]<br>&nbsp;&nbsp;&nbsp;&nbsp;
                                                    <input type="radio" name="q1" value="$obj["ch2"]"> $obj["ch2"]<br>&nbsp;&nbsp;&nbsp;&nbsp; 
                                                  <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.&nbsp;&nbsp;". $links[$rand_keys[0]] . "<br>";
    echo "</td></tr><tr><td>";
    echo "2.&nbsp;&nbsp;".$links[$rand_keys[1]] . "<br>";
    echo "</td></tr><tr><td>";
    echo "3.&nbsp;&nbsp;". $links[$rand_keys[2]] . "<br>";
    echo "</td></tr><tr><td>";


    }

它不工作。代码有什么问题吗?请帮助我找出错误以使其工作或任何可以实现我的目的的方法。

【问题讨论】:

  • @AlexBlex 我不确定它是否重复。
  • @Puneeth,你用的是哪个版本的 MongoDB?
  • @ConstantinGuay,2.6.11。
  • @Puneeth 好的,所以你不能使用 MongoDB 3.2 的新功能 $sample。在没有 PHP 的情况下从数据库中获取随机值的方法可能是添加随机条目。您添加一个字段 'random' =&gt; rand(1,10000)(取决于您将拥有多少个文档),然后在您的查询中,您也要求一个随机值。

标签: php mongodb random


【解决方案1】:

好的,考虑到其他非重复问题,我建议单独学习 php 基础知识并尝试迭代硬编码嵌套数组以打印预期输出。

所以问题中的代码有些问题:

  • 它不会获取随机问题
  • 它什么都不打印,只是将 1 个长字符串添加到 links 数组。请学习difference between ' and "
  • 没有循环来迭代答案,它根本不是有效的 php 代码

工作代码(再次考虑来自non-duplicated question 的文档结构)可能如下所示:

foreach ($cursor as $obj) { 
    echo $obj["question"];
    foreach($obj["answers"] as $key=>$answer) {
        echo '<input type="radio" name="' . $key . '" value="'.$answer.'">';
    }
}

【讨论】:

  • 我编辑了随机打印的代码。现在你能给我一些有用的答案吗?请记住这项工作没有 for 循环。可以做些什么来让它发挥作用。
  • 没有 Puneeth。显然我不能。我放弃了。
  • 如果是这样,那为什么这不起作用。 echo '';请记住没有嵌套记录,所以访问 obj[ch1].
猜你喜欢
  • 1970-01-01
  • 2019-07-07
  • 2011-08-27
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
相关资源
最近更新 更多