PDA

View Full Version : نحوه چیدمان رندوم سوالات در آزمون آنلاین



rash44
چهارشنبه 19 آذر 1393, 15:51 عصر
سلام
در نرم افزار آزمون آنلاین تستی ، تعدادی سوال از دیتابیس خونده میشه و نمایش داده میشه . هر سوال 4 گزینه
تستی داره که اونها هم از بانک خونده میشن
به چه صورتی می تونم جای گزینه های هر سوال رو در هر بار رفرش صفحه جابجا کنم و نحوه نمایش
گزینه ها به صورت رندومی باشه

rash44
چهارشنبه 19 آذر 1393, 15:52 عصر
کوئری ها


while($row=mysql_fetch_assoc($result3)) { // نمایش لیست سوالات آزمون
SELECT * FROM `بانک سوالات` WHERE `id`='$row[question] LIMIT 1' // نمایش گزینه های سوال

rash44
چهارشنبه 19 آذر 1393, 17:34 عصر
لطفا راهنمائی کنید

Mohammadsgh
چهارشنبه 19 آذر 1393, 17:55 عصر
از تابع mysql rand استفاده کن

rash44
پنج شنبه 20 آذر 1393, 08:13 صبح
اگر منظورتون کوئری بصورت زیر هست :


SELECT * FROM `Table` ORDER BY rand()

چون فقط یک رکورد واکشی میشه جواب نمیده


SELECT * FROM `بانک سوالات` WHERE `id`='$row[question] LIMIT 1' // نمایش گزینه های سوال

Mohammadsgh
پنج شنبه 20 آذر 1393, 21:47 عصر
این به ذهنم رسید.ببینید به دردتون میخوره؟


select * from `table` ORDER BY rand() limit 0,4

rash44
دوشنبه 24 آذر 1393, 10:41 صبح
این به ذهنم رسید.ببینید به دردتون میخوره؟


select * from `table` ORDER BY rand() limit 0,4

سلام
جواب نداد

bagherok
دوشنبه 24 آذر 1393, 18:23 عصر
خب بصورت رندم نشون بدید
منظورم استفاده از shuffle هست.

H:Shojaei
دوشنبه 24 آذر 1393, 20:16 عصر
سلام
جواب ها رو داخل یه آرایه پوش کنید بعد وقتی میخواید بخونید یه عدد رندوم بین 1و4 بسازید اولی رو با اون عدد رندوم نمایش بدین و همون مقدار رو pop کنید تا از گزینه ها حذف بشه و واسه مقدار بعدی یه عدد رندوم دیگه بین 0و3 بسازید و باز همینطور توسط یه حلقه انجام میشه...

H:Shojaei
دوشنبه 24 آذر 1393, 20:25 عصر
اینم نمونش:


$answers=array('low','normal','high','very high');
for($i=count($answers)-1;$i>=0;$i--)
{
$index=rand(0,$i); echo $answers[$index].'<br>';
unset($answers[$index]);
$answers=array_values($answers);
}

Mohammadsgh
دوشنبه 24 آذر 1393, 21:37 عصر
این روش اصولی نیست.روش درست استفاده از تابع rand با mysql هست

id1385
دوشنبه 24 آذر 1393, 22:15 عصر
سلام
ببین این بدردت میخوره ؟
قبلاً یه چیزی مینوشتم توش این مورد بود که بصورت رندوم جوابها رو بچینم مثل آزمون آنلاین


<?php


$test = array(
"q" => 'اینکه میگویند مرغ یه پا داره یعنی چی؟',
"j1" => 'نمیدانم',
"j2" => 'شاید منظورشان چیز دیگریست',
"j3" => 'اساتید اتفاق نظر دارند که ورغ دو پا دارد',
"j4" => 'یعنی هرچی من میگم همونه، درست و غلط!!',
"true" => '4',
);






function rnd(){
$QuestionRandom = array();
$current_number = '';
$completed = false;
mt_srand((double)microtime()*1000000);

while ($completed !== true) {
$current_number = '';
$current_number = mt_rand(1,4);
if ($current_number < 5 && in_array($current_number, $QuestionRandom) == false) {
$QuestionRandom[] = $current_number;
}
if(count($QuestionRandom) == 4){$completed = true; return $QuestionRandom; exit();}
}
}






$RndKey = rnd();
echo '<b>سوال ۱</b> - '.$test['q']."</br>";
$true_answer = $test['true'];
$markup = '';


for($i=0; $i< count($RndKey); $i++){
$k =$i+1;
$RndKey[$i] == $true_answer ? $markup =' * ' : $markup ='';

echo "<b>جواب شماره $k</b> - ".$test['j'.$RndKey[$i]].$markup."</br>";
}


?>

پیوست شد

H:Shojaei
دوشنبه 24 آذر 1393, 22:47 عصر
این روش اصولی نیست.روش درست استفاده از تابع rand با mysql هست
ببخشید میشه بگید چرا اصولی نیست؟؟

Mohammadsgh
سه شنبه 25 آذر 1393, 00:54 صبح
اینکه بیاید مقادیر رو توی آرایه بریزید و مقادیر آرایه رو رندوم چاپ کنه برای اینجور سایتها زیاد جالب نیست.باز اگه سخن تصادفی بود میشد.ایشون میخوان تعدادی پرسش از دیتابیس به صورت رندوم چاپ بشه.از دید شما واقعا این کد به دردشون میخوره؟

Mohammadsgh
سه شنبه 25 آذر 1393, 01:02 صبح
سلام
جواب نداد

من برای تست تو کامپیوتر خودم اجرا کردم و کار کرد.شما هم با دقت بنویسید و اجرا کنید

H:Shojaei
سه شنبه 25 آذر 1393, 01:18 صبح
اینکه بیاید مقادیر رو توی آرایه بریزید و مقادیر آرایه رو رندوم چاپ کنه برای اینجور سایتها زیاد جالب نیست.باز اگه سخن تصادفی بود میشد.ایشون میخوان تعدادی پرسش از دیتابیس به صورت رندوم چاپ بشه.از دید شما واقعا این کد به دردشون میخوره؟
سوال اصلی رو دوباره بخونید...
ایشون گفتن میخوان گزینه ها به صورت رندون نمایش داده بشن نه این که تعدادی سوال به صورت رندوم از دیتابیس بخونن:چشمک:

Mohammadsgh
سه شنبه 25 آذر 1393, 01:29 صبح
هر چی که باشه من پاسخشون رو دادم:لبخند:

hamedarian2009
سه شنبه 25 آذر 1393, 21:29 عصر
کلا جواب سوال شما استفاده از تابع shuffle (http://php.net/manual/en/function.shuffle.php) هست کافیه آرایه ای که از دیتابیس فچ می کنی بزاری داخلش هربار رفرش صفحه برات محتویات رو جابه جا میکنه

id1385
سه شنبه 25 آذر 1393, 22:25 عصر
فکر میکنم فروم فلسفه اش اینه که افراد بیان و دانسته ها و داشته ها خودشونو به اشتراک بزارن و ممکن هم هست این وسط تعدادی بی ربط و یا اصلاً اشتباه باشه


اینکه بیاید مقادیر رو توی آرایه بریزید و مقادیر آرایه رو رندوم چاپ کنه برای اینجور سایتها زیاد جالب نیست.باز اگه سخن تصادفی بود میشد.ایشون میخوان تعدادی پرسش از دیتابیس به صورت رندوم چاپ بشه.از دید شما واقعا این کد به دردشون میخوره؟

دوست عزیز ما که ساختیم شد، شما سوال نخوندی یا اول و آخرشو خوندی، بعدشم شما اگه فایلو بگیری و اجرا کنی به نظرم متوجه میشی، اگه برنامه نویسی و تفکر منطقی شما مثل تصمیم گیری و قضاوتت باشه که حرف نداره :تشویق:، بعدشم قرار نیست که توی آزمون آنلاین حتماً سوالها هم رندم بشن ولی جوابها حتماً باید رندم بشن.


هر چی که باشه من پاسخشون رو دادم:لبخند:

باشه یه صد آفرین بهت میدم، اون مدالم بیارید بندازید گردن این :کف:

Mohammadsgh
چهارشنبه 26 آذر 1393, 00:44 صبح
کسی نیازمند صد آفرینت نیست.مدالم نگهدار درآینده نیازت میشه.اگه ایده داری یا راهنمایی دیگه ای داری بده وگرنه پست الکی و بیخود نزار.شور مسخره بازیو دراوردید

MMSHFE
چهارشنبه 26 آذر 1393, 12:16 عصر
بهتره بحث رو تمام کنید. وقتی عنوان تاپیک با موضوعش همخوانی نداشته باشه انتظار بیشتری هم نمیش داشت. توی عنوان شما گفتین «چیدمان رندوم سؤالات» و بعد توی توضیحات گفتین گزینه ها میخواین تصادفی باشن. بالأخره کدومش باید تصادفی باشه؟ اولی یا دومی یا هردو؟ بعد هم باید ساختار دیتابیستون رو توضیح بدین تا کسی رو هوا و با ذهنیتهای ساختاری خودش راهنماییتون نکنه یا حداقل مشخص بشه کجای طراحی دیتابیس مشکل داره و باید عوض بشه. کدتون رو هم درصورت امکان بگذارین. برای مثال من اصلاً نفهمیدم چرا این کد رو نوشتین؟
SELECT * FROM `بانک سوالات` WHERE `id`='$row[question]' LIMIT 1 // نمایش گزینه های سوال