好吧,我有这个问题
$mysql = "select * from xxx where active = 1 order by Rand() limit $start,12";
mysql_query($mysql);
到目前为止,一切都很顺利。
我想:当我按下下一个按钮(第2页或第3页等)以查看接下来的12个随机记录但不显示我在previus页面中的前12个随机记录!
谢谢大家! p.s抱歉我的英文不好!
答案 0 :(得分:1)
尝试在数组中检索所需的数据,在PHP中使用shuffle()随机化它,并使用一些JQuery对结果进行分页,它会很棒,只有一个查询而且没有刷新。 ;)
答案 1 :(得分:1)
您可以跟踪以前显示的记录“id
并将它们放入数组中。
在您的查询中使用id NOT IN (array)
答案 2 :(得分:0)
应用系统随机抽样的概念,
参考: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)
解决方案 - 这是一种享受。
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密钥随机存储为已检索
使用user-id&amp; pageno with WHERE为该单个用户提取随机密钥&amp;页
将字符串转换回数组并使用带有implode的SELECT WHERE查询中的数组拉出特定页面的匹配键recs
re-circ [user-id&amp; pageno]在搜索/查看期间使用$ _GET / POST - 在新视图或新搜索开始时重新初始化
注释:
- 更好地使用列表进行搜索 - 但需要更多的工作来格式化字符串 - 应该提供最初存储的随机页面结果
数组匹配的问题是每页命令记录;最低的是第一个 - 不是随机的页面显示
临时表没有用 - 因为当脚本被第二次以上的时间扔回服务器时无法访问 - 它被mysql从内存中丢失
php规则 - 没有脆弱的cookie或java脚本!
大问题 - 已解决。
重新获得从您的帖子/答案中获得的帮助。
快乐的日子!