它已经过了5个小时,我仍然试图将我的数据列为随机到我的页面。 我检查过很多样品。这是我在写下之前尝试过的。
db schema
--tblquestions--
id(int)
Question(varchar)
GroupId(int)
--tblhints--
id(int)
hint(varchar)
pic(varchar)
GroupId(int)
tblquestions.GroupId = tblhints.GroupId
在 tblquestions.Question
字段中,每条记录都有两个值。例如:
id(1) Question(America) GroupId(5)
id(2) Question(Germany) GroupId(5)
id(3) Question(Italy) GroupId(6)
id(4) Question(Ukraine) GroupId(6)
喜欢这个。
这是投票应用
我正在向用户提供一个提示和图片,有两个选项(tblquestions.Question)。 用户选择一个,问题一直持续到最后。
它必须随机加载。
我尝试过 order by
, group by
以及许多可能性。
什么都没有。
它的列表是随机的,但我的页面中总是有重复的记录。
尝试过的例子:
<?php
$sorusayisi = 57;
for ($i=1; $i < $sorusayisi ; $i++) {
// $soruId = array();
$soruQues = array();
$soruCevapId = array();
$sqlSorular=mysql_query("SELECT * FROM tblquestions AS r1
JOIN (SELECT (RAND() * (SELECT MAX(id) FROM tblquestions)) AS id) AS r2
WHERE r1.Id >= r2.Id");
while($rsSorular = mysql_fetch_array($sqlSorular)) {
$soruCevapId[] = $rsSorular["Id"];
$soruQues[] = $rsSorular["Question"];
$soruGrId = intval($rsSorular["GroupId"]);
}
$sHint = mysql_query("SELECT * FROM tblhints WHERE GroupId=".$soruGrId."");
$rsHint = mysql_fetch_array($sHint);
$soruHint = $rsHint["hint"];
$soruPic = $rsHint["pic"];
$sCevap = mysql_query("SELECT * FROM tblanswers WHERE GroupId=".$soruGrId."");
$rsCevap = mysql_fetch_array($sCevap);
$cevapId = $rsCevap["Answer"];
// $soruPic = $rsCevap["pic"];
?>
//div codes
<?php
}>
for ($i=1; $i < $kac_soru_sorulacak ; $i++) {
$soruCevapId = array();
$question = array();
$hintsql = mysql_query("SELECT * FROM tblhints GROUP BY GroupId ORDER BY rand() LIMIT 1");
$hintrs = mysql_fetch_assoc($hintsql);
// $sorular = array();
$hintId = intval($hintrs["id"]);
$hint = $hintrs["hint"];
$foto = $hintrs["pic"];
$grupid = intval($hintrs["GroupId"]);
################
################
$cevapsql = mysql_query("select * from tblanswers where GroupId=".$grupid."");
$cevaprs = mysql_fetch_assoc($cevapsql);
$cevapId = intval($cevaprs["Answer"]);
################
################
$hintsayi = mysql_num_rows($hintsql);
$siksql = mysql_query("select * from tblquestions where GroupId=".$grupid." order by rand()");
while ($sikrs=mysql_fetch_assoc($siksql)) {
$question[] =$sikrs["Question"];
$soruCevapId[] = $sikrs["Id"];
}
################
?>
请您给我看一些代码示例吗?
非常感谢
答案 0 :(得分:0)
如果表格不是太大,可以使用随机数创建字段rdm_order(type:FLOAT)并按其排序。正如我所说,如果你的桌子太大,可能会太贵,但另一方面,这是一个非常快速和简单的解决方案:
UPDATE tblquestions SET rdm_order=RAND();
SELECT * FROM tblquestions WHERE GroupId={$grupid} ORDER BY rdm_order;
但是,每个用户会话也只能运行一次UPDATE。