Hello; I have devised a multiple choice vocabulary test where visitors find a sentence with one word missing. The sentence is depicted by a picture. The visitors are supposed to find the correct word. I have already made a gap filling version of it using input element. However, it is very difficult to make a guess in this version. With the one I am developing and asking help for I want to offer them a variety of choices which will -of course- include the correct answer. All the choices and the correct answer are in the database, word column. I have tried the following code and succeded! But the correct answer is always the first choice I want it to appear among the other choices at a random order, which is what is expected of multiple choice questions nowadays. Can you help, please. Here is the code; $result = mysql_query("SELECT * FROM dic ORDER BY RAND() LIMIT 5"); $row = mysql_fetch_array( $result ); { $word = $row['word']; $id = $row['id']; echo "<table style='border-collapse: collapse' border='0' bordercolor='#c3bbbb' cellpadding='3' cellspacing='0'><tr><td colspan='3'><table border='0' height='", $row['height'], "' width='", $row['width'], "' style='table-layout:fixed; background:url(http://sozluk.ingilizdili.net/yeni-sozluk/resim/", $row['picture_1'], ") no-repeat;'><tr><td valign='top'><p align='center'>", $row['definition_1'], "<select name='kelime'><option>??</option>"; } $result1 = mysql_query("SELECT * FROM dic WHERE id = '$id' ORDER BY RAND() LIMIT 5"); while($row1 = mysql_fetch_array( $result1 )) { echo "<option>", $row1['word'], "</option>"; } $result2 = mysql_query("SELECT * FROM dic WHERE id >= '$id' ORDER BY RAND() LIMIT 5"); while($row1 = mysql_fetch_array( $result1 )) { echo "<option>", $row1['word'], "</option>"; } echo "</select><input type='hidden' name='answer' value='", $word, "' />", $row['definition_2'], "</p></td></tr></table></td></tr></table>"; PHP:
First, load data into an array instead of direct displaying then you use php.net/array_shuffle and display it to the current user
I made it though not in a very direct way! Thank you very much. Below is the coding which other people with the same question may find useful. $result = mysql_query("SELECT * FROM db WHERE width != '' ORDER BY RAND() LIMIT 1"); $row = mysql_fetch_array( $result ); { //answer $word = $row['word']; $ws = substr($word, 0, 1); } echo "<table border='0' width='", $row['width'], "' style='table-layout:fixed'><tr><td valign='top'><p align='center'>", $row['definition_1'], " ", "<select name='kelime' onchange='submit();'><option>", $ws, "__________</option>"; //option1 $result1 = mysql_query("SELECT * FROM db WHERE ilk_harf = '$ws' AND word != '$word' ORDER BY RAND() LIMIT 4"); //sorulan kelimeyle aynı türden kelimeleri listele while($row1 = mysql_fetch_array( $result1 )) { $kelime1 = $row1['word']; } //option2 $result2 = mysql_query("SELECT * FROM db WHERE ilk_harf = '$ws' AND word != '$word' AND word != '$kelime1' ORDER BY RAND() LIMIT 1"); while($row2 = mysql_fetch_array( $result2 )) { $kelime2 = $row2['word']; } //option3 $result3 = mysql_query("SELECT * FROM db WHERE ilk_harf = '$ws' AND word != '$word' AND word != '$kelime1' AND word != '$kelime2' ORDER BY RAND() LIMIT 1"); while($row3 = mysql_fetch_array( $result3 )) { $kelime3 = $row3['word']; } //option4 $result4 = mysql_query("SELECT * FROM db WHERE ilk_harf = '$ws' AND word != '$word' AND word != '$kelime1' AND word != '$kelime2' AND word != '$kelime3' ORDER BY RAND() LIMIT 1"); while($row4 = mysql_fetch_array( $result4 )) { $kelime4 = $row4['word']; } $cars = array("$kelime1", "$kelime2", "$kelime3", "$kelime4", "$word"); shuffle($cars); echo "<option>", $cars[0], "</option><option>", $cars[1], "</option><option>", $cars[2], "</option><option>", $cars[3], "</option><option>", $cars[4], "</option>"; echo "</select><input type='hidden' name='cevap' value='", $word, "' />", $row['definition_2'], "<br><img src='http://sozluk.ingilizdili.net/yeni-sozluk/resim/", $row['picture_1'], "' height='", $row['height'], "' width='", $row['width'], "'></p></td></tr></form>"; PHP: