Scegliere i valori dinamici dal modulo HTML e archiviarli in PHP varibles

Sto facendo un test attitudinale online, che raccoglierà 2 domande casuali dal database e le visualizzerò sulla pagina web per rispondere.

Il problema è che non memorizza correttamente i valori nel database (durante la memorizzazione di domande e risposte nel database si sta confondendo e alcuni non sono nemmeno memorizzati). Qualcuno può aiutarmi per favore con questo problema,

Il codice qui sotto sta ricevendo risposte dal candidato (la demo semplice prende solo 2 domande casuali).

<?php $connect = mysql_connect("localhost","root","") or die(mysql_error()); $sel=mysql_select_db("demo"); $query = mysql_query("SELECT * FROM `microsoftq` ORDER BY RAND() LIMIT 2 "); rows1 = mysql_fetch_array($query); $q1 = $rows1['QNo']; $qus1 = $rows1['Question']; $a1 = $rows1['Opt1']; $b1 = $rows1['Opt2']; $c1 = $rows1['Opt3']; $d1 = $rows1['Opt4']; $ans1 = $rows1['Ans']; echo " Question:-
$qus1

"; echo " $a1 &nbsp &nbsp
"; echo " $b1 &nbsp &nbsp
"; echo " $c1 &nbsp &nbsp
"; echo " $d1

"; $rows2 = mysql_fetch_array($query); $q2 = $rows2['QNo']; $qus2 = $rows2['Question']; $a2 = $rows2['Opt1']; $b2 = $rows2['Opt2']; $c2 = $rows2['Opt3']; $d2 = $rows2['Opt4']; $ans2 = $rows2['Ans']; echo " Question:-
$qus2

"; echo " $a2 &nbsp &nbsp
"; echo " $b2 &nbsp &nbsp
"; echo " $c2 &nbsp &nbsp
"; echo " $d2

"; } ?>

La parte successiva è memorizzarli nel database, dopo che l’utente fa clic sul pulsante INVIA.

 if (isset($_POST['SUBMIT'])) { $connect = mysql_connect("localhost","root","") or die(mysql_error()); $sel=mysql_select_db("demo"); $opt1=$_POST["answer$q1"]; // Problem is here $id1=array("$q1","$opt1"); if($ans1==$opt1) // Out Correcting answer part { $val1="ct"; } else { $val1="wg"; } $opt2=$_POST["answer$q2"]; // Problem is here $id2=array("$q2","$opt2"); if($ans2==$opt2) // Out Correcting answer part { $val2="ct"; } else { $val2="wg"; } mysql_query("insert into $username values('$id1[0]','$id1[1]','$val1')") or die(mysql_error()); mysql_query("insert into $username values('$id2[0]','$id2[1]','$val2')") or die(mysql_error()); ?> 

Penso che devi solo pubblicare l’ID della domanda in questo modo:

  

Prima

 $opt1=$_POST["answer$q1"]; 

Devi aggiungere:

 $q1=$_POST["q1"]; if (is_numeric($q1)) { $query = mysql_query("SELECT * FROM `microsoftq` WHERE QNo=".$q1); $rows1 = mysql_fetch_array($query); $ans1 = $rows1['Ans']; } 

Codice completo

 // Build Form $nbQuestion = 2; $form = '
'; $form .= getQuestion("SELECT * FROM `microsoftq` ORDER BY RAND() LIMIT ".$nbQuestion); $form .= '
'; // Save answer if (isset($_POST['SUBMIT'])) { for($i=1;i<=$nbQuestion;$i++){ saveAnswer($i); } } function getQuestion($query){ $question = ""; $i = 1; $result = mysql_query($query); while ($row = mysql_fetch_object($result)) { $question .= "Question:-
".$row->Question."

"; $question .= ""; $question .= "$a1 &nbsp &nbsp
"; $question .= " $b1 &nbsp &nbsp
"; $question .= " $c1 &nbsp &nbsp
"; $question .= " $d1

"; $i++; } mysql_free_result($result); } function saveAnswer($nb){ $qId=$_POST["q".$nb]; if (is_numeric($qId)) { $query = mysql_query("SELECT * FROM `microsoftq` WHERE QNo=".$qId); $rows1 = mysql_fetch_array($query); $ans = $rows1['Ans']; $opt = $_POST["answer".$qId]; if($ans==$opt) { $val="ct"; } else { $val="wg"; } mysql_query("insert into $username values('$qId','$opt','$val')") or die(mysql_error()); } } ?>