I coded a math quiz in PHP in which a user selects radio buttons as their answer choices. I retrieve the data of these ten radio buttons using $_POST[];
However, I have ten separate post queries for EACH radio button as well as SQL queries, and also ten separate if statements to check for each correct answer. It looks very clunky and bad coding practice. Does anyone have any tips to clean this code up? I figure using a loop or an array would maybe be a good start but it seems overwhelming.
//these variables hold which radio button the user selected
$answerChoice1 = $_POST['test1']; //pulls value of radio button named test 1
$answerChoice2 = $_POST['test2'];
$answerChoice3 = $_POST['test3'];
$answerChoice4 = $_POST['test4'];
$answerChoice5 = $_POST['test5'];
$answerChoice6 = $_POST['test6'];
$answerChoice7 = $_POST['test7'];
$answerChoice8 = $_POST['test8'];
$answerChoice9 = $_POST['test9'];
$answerChoice10 = $_POST['test10'];
$questionID1 = $_POST['theId1']; //pulls the 'bid' of the question asked
$questionID2 = $_POST['theId2'];
$questionID3 = $_POST['theId3'];
$questionID4 = $_POST['theId4'];
$questionID5 = $_POST['theId5'];
$questionID6 = $_POST['theId6'];
$questionID7 = $_POST['theId7'];
$questionID8 = $_POST['theId8'];
$questionID9 = $_POST['theId9'];
$questionID10 = $_POST['theId10'];
$sqlAnswer1 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID1 . "\" "; //sql statement for selecting the questions that were generated
$sqlAnswer2 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID2 . "\" "; //on the page
$sqlAnswer3 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID3 . "\" ";
$sqlAnswer4 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID4 . "\" ";
$sqlAnswer5 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID5 . "\" ";
$sqlAnswer6 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID6 . "\" ";
$sqlAnswer7 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID7 . "\" ";
$sqlAnswer8 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID8 . "\" ";
$sqlAnswer9 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID9 . "\" ";
$sqlAnswer10 = "SELECT * FROM `math` WHERE `bid` = \"" . $questionID10 . "\" ";
$sqlAnswerQuery1 = mysqli_query($link,$sqlAnswer1); //query for the select statements
$sqlAnswerQuery2 = mysqli_query($link,$sqlAnswer2);
$sqlAnswerQuery3 = mysqli_query($link,$sqlAnswer3);
$sqlAnswerQuery4 = mysqli_query($link,$sqlAnswer4);
$sqlAnswerQuery5 = mysqli_query($link,$sqlAnswer5);
$sqlAnswerQuery6 = mysqli_query($link,$sqlAnswer6);
$sqlAnswerQuery7 = mysqli_query($link,$sqlAnswer7);
$sqlAnswerQuery8 = mysqli_query($link,$sqlAnswer8);
$sqlAnswerQuery9 = mysqli_query($link,$sqlAnswer9);
$sqlAnswerQuery10 = mysqli_query($link,$sqlAnswer10);
$rowAnswer1=mysqli_fetch_array($sqlAnswerQuery1); //fetches the row of the questions asked on the page
$rowAnswer2=mysqli_fetch_array($sqlAnswerQuery2);
$rowAnswer3=mysqli_fetch_array($sqlAnswerQuery3);
$rowAnswer4=mysqli_fetch_array($sqlAnswerQuery4);
$rowAnswer5=mysqli_fetch_array($sqlAnswerQuery5);
$rowAnswer6=mysqli_fetch_array($sqlAnswerQuery6);
$rowAnswer7=mysqli_fetch_array($sqlAnswerQuery7);
$rowAnswer8=mysqli_fetch_array($sqlAnswerQuery8);
$rowAnswer9=mysqli_fetch_array($sqlAnswerQuery9);
$rowAnswer10=mysqli_fetch_array($sqlAnswerQuery10);
if ($answerChoice1 == $rowAnswer1['aanswer']){ //compares value of the
//radio button selected with
$score = $score + 1; //the field of the correct answer
} //if the two strings match, increment score by 1
else{
$correctAnswer1 = false;
}
if ($answerChoice2 == $rowAnswer2['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer2 = false;
}
if ($answerChoice3 == $rowAnswer3['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer3 = false;
}
if ($answerChoice4 == $rowAnswer4['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer4 = false;
}
if ($answerChoice5 == $rowAnswer5['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer5 = false;
}
if ($answerChoice6 == $rowAnswer6['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer6 = false;
}
if ($answerChoice7 == $rowAnswer7['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer7 = false;
}
if ($answerChoice8 == $rowAnswer8['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer8 = false;
}
if ($answerChoice9 == $rowAnswer9['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer9 = false;
}
if ($answerChoice10 == $rowAnswer10['aanswer']){
$score = $score + 1;
}
else{
$correctAnswer10 = false;
}
$answerChoice1 = $_POST['test1'];
you can replace it by something like$answerChoice[$i] = $_POST['test' + $i];
and wrap that line in a loop to replace all ten identical lines. (basically. you may need to add the declarations of the arrays) \$\endgroup\$