好,大家好我有這個疑問顯示器隨機記錄,但不一樣的
$mysql = "select * from xxx where active = 1 order by Rand() limit $start,12";
mysql_query($mysql);
一切偉大的工程至今。
我想要的是:當我按下一個按鈕(第2頁或第3頁等)來查看下面的12條隨機記錄,但不顯示我以前的頁面中的前12條隨機記錄!
謝謝大家! p.s對不起,我的英文不好!
好,大家好我有這個疑問顯示器隨機記錄,但不一樣的
$mysql = "select * from xxx where active = 1 order by Rand() limit $start,12";
mysql_query($mysql);
一切偉大的工程至今。
我想要的是:當我按下一個按鈕(第2頁或第3頁等)來查看下面的12條隨機記錄,但不顯示我以前的頁面中的前12條隨機記錄!
謝謝大家! p.s對不起,我的英文不好!
試着在數組中檢索你需要的數據,用PHP中的shuffle()對它進行隨機化,並用一些JQuery對結果進行分頁,它會很棒,只有一個查詢而不刷新。 ;)
夥計們,我用這種方式檢索我的記錄: –
您可以跟蹤之前顯示的記錄'id
s並將它們放入數組中。
在查詢中使用id NOT IN (array)
雖然這種方法可行,但它有點不切實際,因爲它需要兩個不同的查詢,@ Fry_95的答案是更實際的 –
你可能是正確的,但如果你有很多記錄? – Jurgo
您仍然需要將ID存儲在某個地方! –
你需要保持一個陣列(例如$arrRecordIds
)來跟蹤對前幾頁中顯示的記錄所有的ID。
當你第一頁上:
$arrRecordIds=array(); // Empty array
當你在第二頁上:如果您選擇查詢只需concat- where id NOT IN (implode(',', $arrRecordIds))
這裏$arrNewRecordIds
$arrRecordIds=array_merge($arrRecordIds, $arrNewRecordIds);array_unique($arrRecordIds);
應該在頁面上包含記錄的id。
應用系統隨機的概念抽樣,
參見: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);
我已經使用jquery進行分頁,下面是我如何檢索結果:從index.php代碼:$(「#coupondiv」)。load(「showdata.php?page = 1」,hideLoader);和showdata.php文件:$ per_page = 12; $ sqlc =「顯示優惠券列」; $ rsdc = mysql_query($ sqlc); $ cols = mysql_num_rows($ rsdc); $ page = $ _REQUEST ['page']; $ start =($ page-1)* 12; $ sqln =「select * from xxx where active = 1 order by Rand()limit $ start,12」; $ rsd = mysql_query($ sqln);現在請能有人告訴我如何解決我的問題? –
@GeorgeL。嘗試使用我發佈在您的showdata.php文件中的腳本。我有點擔心查詢性能。 – Suriya
的解決方案 - 一個可行的治療。
tb.rec-no | user-id | pageno |字符串(帶有可接受的關鍵字/頁面)
122 | aj7894 | p1 | [0] => 100 [1] => 400 [2] => 056 [3] => 129
123 | aj7894 | p2 | [x] 99 => [x] 240 => [x] 7895 [x] 458 => 320
...達到整個頁面/無記錄/所有頁面 - 不重複數據 - 僅1存儲在隨機研究倫理委員會的關鍵的-column作爲檢索
使用用戶ID &您做生意用WHERE拉出爲該單個用戶&頁
轉換隨機密鑰字符串返回到數組,並使用SELECT WHERE查詢中的數組抽取特定頁面的匹配關鍵記錄以及implode
重新保監會[用戶ID &您做生意]使用$ _GET/POST進行的搜索/觀看時間 - 重新初始化時,新觀點或新的搜索開始
筆記:
- 更好的使用列表搜索 - 但需要更多的工作,以格式字符串 - 應該給隨機頁面結果原本儲存
與陣列匹配問題是訂單每頁記錄;最低的是第一 - 不是頁面顯示
臨時表沒有好,所以隨機 - 當腳本被拋回給服務器進行第二次和更多的時間,因爲不能被訪問 - 它從內存中由mysql
PHP丟失規則 - 沒有脆弱的cookie或java腳本!
大問題 - 已解決。
從您的帖子/答案中收到的重新補充幫助。
快樂的日子!
'ORDER BY RAND()'[應該避免像瘟疫一樣](http://stackoverflow.com/questions/6592751/why-dont-use-mysql-order-by-rand)除非你的表有100行或一些這樣的數字。 – Jon
看起來像連續兩次隨機選擇相同記錄的概率太高。如果可能的話,你可能只需要更多的記錄。否則,您需要一些(相當笨拙的)跟蹤每個會話記錄的最後選定部分的機制等。如果您真的需要類似的東西,可以考慮將記錄範圍邏輯地分割成段(> = 12記錄),跟蹤會話中的最近段,並使用select中的limit子句從不同段中每次查詢。 –