Проверка на теста

AnyB1s

Registered
Здравейте, използвам урока за тестовата система обаче не иска да ми проверява отговорите, в смисъл каквото избера винаги ми казва, че не съм избрал отговор:
Таблица:
Код:
CREATE TABLE `testowe` (
  `id_test` int(11) NOT NULL auto_increment,
  `test_ime` varchar(50) NOT NULL,
  `wypros` varchar(50) NOT NULL,
  `otg1` varchar(50) NOT NULL,
  `otg2` varchar(50) NOT NULL,
  `otg3` varchar(50) NOT NULL,
  `weren` varchar(50) NOT NULL,
  `q` varchar(10) NOT NULL,
  PRIMARY KEY  (`id_test`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
Ето ми го и кода:
Код:
$ime = $_GET['ime'];
if($ime){
if (!$_POST['submit']) { 


echo "<form method=post action=$PHP_SELF>"; 
echo "<table border=0>"; 
$display = mysql_query("SELECT * FROM testowe WHERE test_ime='$ime' ",$conn);
while ($row = mysql_fetch_array($display)) { 

$id = $row["id_test"]; 
$question = $row["wypros"]; 
$opt1 = $row["otg1"]; 
$opt2 = $row["otg2"]; 
$opt3 = $row["otg3"]; 
$answer = $row["weren"]; 

echo "
<tr>
<td colspan=3><br><b>$question</b></td>
</tr>"; 

echo "
<tr>
<td>$opt1 <input type=radio name=q$id value=\"$opt1\"></td>

<td>$opt2 <input type=radio name=q$id value=\"$opt2\"></td>

<td>$opt3 <input type=radio name=q$id value=\"$opt3\"></td></tr>"; 

} 

echo "</table>"; 
echo "<input type='submit' value='Натисни!' name='submit'>"; 
echo "</form>"; 

} 

elseif ($_POST['submit']) 

{ 
$display = mysql_query("SELECT * FROM testowe WHERE test_ime='$ime' ",$conn);
$score = 0; 
$total = mysql_num_rows($display); 
while ($result = mysql_fetch_array($display)) 


{ 

$answer = $result["weren"]; 
$q = $result["q"]; 

if ($$q == $answer) 
{ 
$score++; 
} 

} 

echo "<p align=center><b>Вие отбелязахте $score точки от общо $total</b></p>"; 
echo "<p>"; 

if ($score == $total) { 
echo "Поздравления! Вие отговорихте на всички въпроси правилно!"; 
} 
elseif ($score/$total < 0.34) { 
echo "О, боже. Не е най-добрия резултат, но не се тревоете, това е просто тест."; 
} 
elseif ($score/$total > 0.67) { 
echo "Добра работа! Разбирате си от работата."; 
} 
else { 
echo "Не е зле, но все пак има няколко на които се провалихте!"; 
} 

echo "</p>"; 

echo "<p>Ето ги въпросите:"; 

echo "<table border=0>"; 
$display = mysql_query("SELECT * FROM testowe WHERE test_ime = '$ime' ORDER BY id_test",$conn); 
while ($row = mysql_fetch_array($display)) { 

$question = $row["wypros"]; 
$answer = $row["weren"]; 
$q = $row["q"]; 

echo "<tr><td><br>$question</td></tr>"; 

if ($q == $answer) 
{ 
echo "
<tr>
<td>» вие отговорихте <font color=\"red\">{$q}</font>, което е правилно</td>
</tr>"; 
} 
elseif ($$q == "") { 
echo "
<tr>
<td>» не сте избрали отговор. Отговора е <font color=\"green\">$answer</font></td>
</tr>"; 
} 
else { 
echo "
<tr>
<td>» вие отговорихте <font color=\"red\">{$q}</font>. Отговора е <font colro=\"green\">$answer</font></td>
</tr>"; 
} 

} 
echo "</table></p>"; 



} 
}
 
това към края $$q -> $q ? Или използваш променлива променлива ?

elseif ($q == "") {
 
Е, сега ми излиза , но обаче ми проверява от полето "q" не което съм избрал. Пробвах се да го направя нали "$q = $_POST['q$id']" (така ми дава грешка).
 
Така не ми дава грешка, обаче малко кофти става при проверката :)
Сега направих един много сложен if() и до някъде работи:
Код:
if($_POST[$da['ime']] == $da['weren'] and $_POST[$da['ime']] == $da['otg1'] or 
	$_POST[$da['ime']] == $da['otg2'] or $_POST[$da['ime']] !== $da['otg3']){
		echo "<font color=\"green\">$da[weren]</font>";
		}
	elseif($_POST[$da['ime']] !== $da['weren']) {
		echo "<font color=\"red\">". $_POST[$da['ime']] ." </font> Верен е <font color=\"green\">$da[weren]</font>";  
		}
	elseif(!isset($_POST[$da['ime']])){ echo "Ne si izbral otgowor";}
	}

Понеже искам ако отговора е верен да излиза в зелено, ако постнатия отговор е грешен да е червен и да излизат другите 2 отговора.
И последната проверка дали е избрал нещо за отговор.
 

Back
Горе