Sto provando a creare un sistema di quiz di base. Il codice seguente mostra come l'utente sceglie la risposta usando radio butto e getresult.php confronta il valore di ingresso radio con la colonna di risposta. Nel mio database c'è una domanda, opt1, opt2, opt3, opt4 e answer colonne.Confronto solo del valore selezionato in loop per evitare il messaggio di errore
<form method="POST" action="getresult.php">
<label>Enter Your Name:</label><br>
<input type="text" name="name"><br><br>
<?php
$db = new mysqli("localhost", "root", "","learndb");
$stmt=$db->prepare("SELECT * FROM quiz");
$stmt->execute();
$result=$stmt->get_result();
echo "<form method='POST' action='getresult.php'>";
while($myrow = $result->fetch_assoc())
{
echo $myrow['id'];
echo ".";
echo $myrow['question'];
echo "<br>";
echo "<input type='radio' name='mycheck[".$myrow['id']."]' value=".$myrow['opt1'].">";
echo $myrow['opt1'];
echo "<br>";
echo "<input type='radio' name='mycheck[".$myrow['id']."]' value=".$myrow['opt2'].">";
echo $myrow['opt2'];
echo "<br>";
echo "<input type='radio' name='mycheck[".$myrow['id']."]' value=".$myrow['opt3'].">";
echo $myrow['opt3'];
echo "<br>";
echo "<input type='radio' name='mycheck[".$myrow['id']."]' value=".$myrow['opt4'].">";
echo $myrow['opt4'];
echo "<br><br>";
}?>
<input type="submit" name="submit" value="Get Results" class="btn btn-primary">
// getresult.php
<?php
extract($_POST);
$db = new mysqli("localhost", "root", "","learndb");
$stmt=$db->prepare("SELECT * FROM quiz");
$stmt->execute();
$result=$stmt->get_result();
$submit=isset($_POST['submit']);
$count=0;
if($submit)
{
while($myrow = $result->fetch_assoc())
{
if($mycheck[$myrow['id']]==$myrow['answer'])
{
$count=$count+1;
}
}
echo "Hello ";
echo $_POST['name'];
echo "<br>";
echo "You scored ";
echo "$count";
}
tutto è corretto, ma se non si seleziona un pulsante di scelta da una domanda, vale a dire se lascio la questione viene visualizzato definito errore di offset che è ovvio ma come posso non mostrarlo. O come posso confrontare solo le opzioni scelte?
Ho testato il codice e funziona come previsto. L'unica cosa che non riesco a riprodurre è il tuo database. Hai caratteri speciali nei campi del database? Nota a margine 1: il tuo codice HTML non è valido: apri '
@ fusion3k ho fissato le note laterali. controllato tutti i campi del database. ma ancora non ha trovato la soluzione. – micky
Su quale versione di PHP stai lavorando? – trincot