Jump to content

randomising choices


MIR1999

Recommended Posts

I'm looking for a bit of advice regards the code shown below. I am implementing a questionairre in html/php and got some great help on the code in another thread. One thing i would like to be able to do with my answers is to have them randomly display on the screen instead of them being in the same order all the time. For example, one question may be: What make of mobile phone do you own? A)Nokia B)Motorolla C)Siemens D)Sony. The choices will always be the same except i would like Nokia to be in a different positions from choice A the next time someone runs the questionairre. Is this possible?


if($successful) {
echo '<table align="left">';
while ($row=mysql_fetch_array($result,MYSQL_NUM)){

$id = $row[0];
$q = $row[1];
$answer1 = $row[2];
$answer2 = $row[3];
$answer3 = $row[4];
$answer3 = $row[4];

echo'<tr><td align=\"left\">'.$q.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer1.'"/>'.$answer1.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer2.'"/>'.$answer2.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer3.'"/>'.$answer3.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer4.'"/>'.$answer4.'</td></tr>'."\n";
}
echo '</table>';
echo '</form>';

}else{
echo'<p><b>Error. Please contact admin</b></p>';
}
Link to comment
https://forums.phpfreaks.com/topic/4707-randomising-choices/
Share on other sites

this is not the full answer, you you should get the picture pretty easily...
You could even randomize the orders directly instead...

[code]
$rand=rand(1,4)
if($successful)    {
echo '<table align="left">';
while ($row=mysql_fetch_array($result,MYSQL_NUM)){

$id = $row[0];
$q = $row[1];

if($rand==1){
$answer1 = $row[2];
$answer3 = $row[3];
$answer2 = $row[4];
$answer4 = $row[5];}

elseif($rand==2){
$answer2 = $row[2];
$answer4 = $row[3];
$answer3 = $row[4];
$answer1 = $row[5];}

elseif($rand==3){
$answer4 = $row[2];
$answer1 = $row[3];
$answer3 = $row[4];
$answer2 = $row[5];}

else($rand==4){
$answer3 = $row[2];
$answer4 = $row[3];
$answer1 = $row[4];
$answer2 = $row[5];}

echo'<tr><td align=\"left\">'.$q.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer1.'"/>'.$answer1.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer2.'"/>'.$answer2.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer3.'"/>'.$answer3.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer4.'"/>'.$answer4.'</td></tr>'."\n";
}
echo '</table>';
echo '</form>';

}else{
echo'<p><b>Error. Please contact admin</b></p>';
}
[/code]
Link to comment
https://forums.phpfreaks.com/topic/4707-randomising-choices/#findComment-16493
Share on other sites

or try

[code]if($successful) {
echo '<table align="left">';
while ($row=mysql_fetch_array($result,MYSQL_NUM)){

$id = $row[0];
$q = $row[1];
   // put answers into array and shuffle them
$answer = array_slice($row, 2, 4);
shuffle($answer);

echo'<tr><td align=\"left\">'.$q.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer[0].'"/>'.$answer[0].'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer[1].'"/>'.$answer[1].'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer[2].'"/>'.$answer[2].'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer[3].'"/>'.$answer[3].'</td></tr>'."\n";
}
echo '</table>';
echo '</form>';

}else{
echo'<p><b>Error. Please contact admin</b></p>';
}[/code]
Link to comment
https://forums.phpfreaks.com/topic/4707-randomising-choices/#findComment-16533
Share on other sites

[!--quoteo(post=354000:date=Mar 11 2006, 08:36 PM:name=AV1611)--][div class=\'quotetop\']QUOTE(AV1611 @ Mar 11 2006, 08:36 PM) [snapback]354000[/snapback][/div][div class=\'quotemain\'][!--quotec--]
this is not the full answer, you you should get the picture pretty easily...
You could even randomize the orders directly instead...

[code]
$rand=rand(1,4)
if($successful)    {
echo '<table align="left">';
while ($row=mysql_fetch_array($result,MYSQL_NUM)){

$id = $row[0];
$q = $row[1];

if($rand==1){
$answer1 = $row[2];
$answer3 = $row[3];
$answer2 = $row[4];
$answer4 = $row[5];}

elseif($rand==2){
$answer2 = $row[2];
$answer4 = $row[3];
$answer3 = $row[4];
$answer1 = $row[5];}

elseif($rand==3){
$answer4 = $row[2];
$answer1 = $row[3];
$answer3 = $row[4];
$answer2 = $row[5];}

else($rand==4){
$answer3 = $row[2];
$answer4 = $row[3];
$answer1 = $row[4];
$answer2 = $row[5];}

echo'<tr><td align=\"left\">'.$q.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer1.'"/>'.$answer1.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer2.'"/>'.$answer2.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer3.'"/>'.$answer3.'</td></tr>
<tr><td align=\"left\"><input type="radio" name="option['.$id.']"value="'.$answer4.'"/>'.$answer4.'</td></tr>'."\n";
}
echo '</table>';
echo '</form>';

}else{
echo'<p><b>Error. Please contact admin</b></p>';
}
[/code]
[/quote]

I tried this and it worked really well. Many thanks. Thanks also to the other reply, i didn't try it but thnks for the effort.
Link to comment
https://forums.phpfreaks.com/topic/4707-randomising-choices/#findComment-16672
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.