在每个页面中显示随机记录但不相同

时间:2012-09-20 12:34:17

标签: php

好吧,我有这个问题

$mysql = "select * from xxx where active = 1 order by Rand() limit $start,12";
mysql_query($mysql);

到目前为止,一切都很顺利。

我想:当我按下下一个按钮(第2页或第3页等)以查看接下来的12个随机记录但不显示我在previus页面中的前12个随机记录!

谢谢大家! p.s抱歉我的英文不好!

4 个答案:

答案 0 :(得分:1)

尝试在数组中检索所需的数据,在PHP中使用shuffle()随机化它,并使用一些JQuery对结果进行分页,它会很棒,只有一个查询而且没有刷新。 ;)

答案 1 :(得分:1)

您可以跟踪以前显示的记录“id并将它们放入数组中。

在您的查询中使用id NOT IN (array)

答案 2 :(得分:0)

应用系统随机抽样的概念,

  • 记录编号N,决定n(分页大小,例如:10,20)
  • 您想要或需要的
  • (样本大小)k = N / n =区间大小
  • 随机选择1到k之间的整数,然后选择每第k个单位

参考:http://www.socialresearchmethods.net/kb/sampprob.php

尝试在showdata.php文件中使用以下脚本

$per_page = 12; 
$sqlc = "show columns from coupons"; 
$rsdc = mysql_query($sqlc); 
$cols = mysql_num_rows($rsdc); 
$page = $_REQUEST['page']; 
$start = ($page-1)*12; 

$N = 1000; //Total rows in your table (query to get it dynamically)
$n = $per_page;
$k = ceil($N/$n);

$range[] = $page;

for($i=1;$i<$n;$i++) {
 $range[] = ($page+$k)*$i;
}

$sqln = "SELECT * FROM ( SELECT @rownum:= @rownum+1 AS rindex, n.* FROM xxx n, (SELECT @rownum := 0) r ) AS rows WHERE rindex IN (".implode(',',$range).")";
$rsd = mysql_query($sqln); 

答案 3 :(得分:0)

解决方案 - 这是一种享受。

  1. 选择随机搜索所有必需记录
  2. 生成随机用户ID,例如。 “史密斯” .rand(1000,10000)
  3. 形成一串所有随机密钥,每页不需要记录
  4. 在上面插入包含相应页面号的表/字段。
  5. 上面重复/循环,直到没有剩余的pages / recs - 使用array_splice(str,from,to) - 然后使用$ notscreen = print_r($ splice,true)将字符串存储到表 - &gt; randompages:
  6. tb.rec-no | user-id | pageno | string(带有recs up to recs / page的键)

    122 | aj7894 | p1 | [0] =→100 [1] =&GT; 400 [2] =&GT; 056 [3] =&GT; 129

    123 | aj7894 | p2 | [X] 99 =&GT; [X] 240 =&GT; [X] 7895 [X] 458 =&GT; 320

    ...到整个页面数组/没有记录/所有页面 - 没有重复数据 - 只有1列的recs密钥随机存储为已检索

    1. 使用user-id&amp; pageno with WHERE为该单个用户提取随机密钥&amp;页

    2. 将字符串转换回数组并使用带有implode的SELECT WHERE查询中的数组拉出特定页面的匹配键recs

    3. re-circ [user-id&amp; pageno]在搜索/查看期间使用$ _GET / POST - 在新视图或新搜索开始时重新初始化

    4. 注释:

      - 更好地使用列表进行搜索 - 但需要更多的工作来格式化字符串 - 应该提供最初存储的随机页面结果

      • 数组匹配的问题是每页命令记录;最低的是第一个 - 不是随机的页面显示

      • 临时表没有用 - 因为当脚本被第二次以上的时间扔回服务器时无法访问 - 它被mysql从内存中丢失

      • php规则 - 没有脆弱的cookie或java脚本!

      大问题 - 已解决。

      重新获得从您的帖子/答案中获得的帮助。

      快乐的日子!