本文目錄一覽:
- 1、PHP考試系統怎麼實現在同一頁面提交後,實現隨機出題,並保證提交後,不再隨機,要求試題和答案保持一致
- 2、題庫有600題,我想隨機選其中的100道,這100道不能重複, 演算法
- 3、用php+mysql做一個題庫系統,隨機抽取五百題左右生成考試卷,最有效率的做法是什麼?
- 4、PHP考試系統怎麼實現隨機出卷,並且提交是同一頁面,提交後給出題目與對應答案的對錯情況。主要是怎麼在
- 5、PHP 考試系統怎麼生成隨機試題,求代碼寫法.以選擇題為例說明一下就行,假如從10個裡抽3個,怎麼在提交之
- 6、用PHP做一個答題系統。求救啊~~~~
PHP考試系統怎麼實現在同一頁面提交後,實現隨機出題,並保證提交後,不再隨機,要求試題和答案保持一致
用sesssion保存答過的題目id
每次選題前,先從session取出已答題目id跟所有題目id做一個差集,array_diff()可以計算數據差集。
新的題目從這個差集里隨機選取。
至於試題和答案對應關係,做好答案和試題id的關聯關係就行。
題庫有600題,我想隨機選其中的100道,這100道不能重複, 演算法
就是將600題放在數組裡,然後調用shuffle這個PHP函數將數組打亂,取前100項就是需要的100題
至於這個打亂的演算法,大致是這樣
for (i=0;i600;++i) {
a=myarray[i];
j=rand(i,600-1);
myarray[i]=myarray[j];
myarray[j]=a;
}
用php+mysql做一個題庫系統,隨機抽取五百題左右生成考試卷,最有效率的做法是什麼?
php裡面有array_rand函數,你要是一道題一道題的讀出來,或許也可以嘗試一下。但是要是一下子都讀出來,即便這個函數效率可以的話,隨機取出id數組,查詢 「where id in 數組」 就不如直接在資料庫里隨機抽取記錄。
如何從數據表裡隨機抽取記錄呢,想想辦法還是有一些,就是不知道效率如何。有的是說用max_id*rand(),那一條一條抽取還是可以的。怎麼批量隨機抽取呢,可以試著排序,然後選取前500題,排序可以想辦法用一些函數(選取一些執行效率高的),如何md5,sha1,這種。如果為了使結果更具有隨機性,可以把欄位值再與一個隨機數運算一下。僅供參考。
========================
我想你還是用array_rand隨機抽500個id存到數組,然後遍曆數組吧。這樣也避免了題目重複。在資料庫里如果一次一條記錄隨機抽取,要考慮碰巧重複的問題。批量選取你就按上面我說的試試。
PHP考試系統怎麼實現隨機出卷,並且提交是同一頁面,提交後給出題目與對應答案的對錯情況。主要是怎麼在
並發訪問量不大的話,在生成題目的同時,生成答案,將生成的答案直接寫入$_SESSION。
並發訪問量大的話,給每條題目一個ID,提交時,同時提交ID和答案,根據ID到資料庫中逐條比對。
如果只是練習的話,安全性要求不高,直接將js加密,再將答案加密,直接發送到客戶端Cookie,將考試結果再加密,返回伺服器。這種性能最好。
PHP 考試系統怎麼生成隨機試題,求代碼寫法.以選擇題為例說明一下就行,假如從10個裡抽3個,怎麼在提交之
很簡單,給你一個思路
你在資料庫裡面放10個題,
id questions options right_answer
1 china 是指哪個國家? A:中國;B:日本;C:美國 A
… ……………. …………. …
這樣你從資料庫中讀取全部數據出來;
為了實現隨機性,你可以用一個數組
?php
$query=$mysql_query(“select * from ‘表名'”);
$results=$mysql_fetch_row($query);
$rand=array_rand($results,3);//取出隨機的三個問題,注意這裡取得是三個鍵值
$question=array($result[$rand[0]],$result[$rand[1]],$result[$rand[2]]);//將取出的三個問題放進一個數組中
?
form action=”目標地址(此處用本頁面地址)” method=”post”
?php
foreach($question as $values)
{
$options=explode(“;”,$values[‘options’]);//用「;」將選項分割存進數組
echo $values[‘questions’];//顯示題目
for($i=0;$icount($options);$i++){
echo “input type=’radio’ name=”.$choice[$valest[‘id’]].” value=’A’ “.$options[i].” /br”;//輸出選項
}
echo “—————————————-“;//題目之間分隔符
}
//下面的代碼是你接受form表單的頁面,如果是本頁面就直接接著上面的代碼寫
if(!empty($_POST[$choice]))
{
foreach($_POST[$choice] as $key= $data)
{
$question_id=$key;
$user_choice=$data;
if(mysql_query(“select * from ‘表名’ where id=”.$key.”and right_answer='”.$data.”‘”))
{
//答案對如何處理。。。。
}
else
{
//答案不對處理辦法。。。。
}
}
}
?
/form
隨手現寫的代碼,可能你裡面有錯誤,但是思路你可以借鑒下~
用PHP做一個答題系統。求救啊~~~~
設置HTML頁面,post取值並與正確答案對比,正確的就執行分數加1,這樣就可以得到總分了
原創文章,作者:IKAA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141910.html