Тест в php. Некорректный подсчет правильных ответов.
Очень нужна ваша помощь. Через 4 часа сдавать.
Имею тест. Вопросы достаю из БД. <?php $db = mysql_connect('localhost', 'ItEconom','22304qqq'); mysql_select_db('IT', $db); $myrow = mysql_query("SELECT question, var1, var2, var3, var4,var5,var6,var7 FROM testProc3 "); $count = 0; $arr[0]=0; While($count<20) { $a = false; while(!$a) { $count2 = 0; $num = rand(1,mysql_num_rows($myrow)-1); for($i=0; $i<count($arr); $i++) { if($num!=$arr[$i]) $count2++; } if($count2==count($arr)) { $arr[$count]=$num; $a=true;} } $count++; echo "<form action = 'handler.php' method = 'Post' name = 'Post'>"; printf("%s<br><label><input type = 'radio' name = 'id[%s][1]' value = '1'></label> а) %s<br><input type = 'radio' name = 'id[%s][2]' value = '2'></label> б) %s<br><input type = 'radio' name = 'id[%s][3]' value = '3'></label> в) %s<br>", mysql_result($myrow,$num,'question'), $num, mysql_result($myrow,$num,'var1'), $num, mysql_result($myrow,$num,'var2'),$num, mysql_result($myrow,$num,'var3')); if (mysql_result($myrow,$num,'var4')!=null) {echo "<input type = 'radio' name = id[".$num."][4] value = '4'></label> г) ".mysql_result($myrow,$num,'var4').'<br>';} if (mysql_result($myrow,$num,'var5')!=null) {echo "<input type = 'radio' name = id[".$num."][5] value = '5'></label> д) ".mysql_result($myrow,$num,'var5').'<br>';} if (mysql_result($myrow,$num,'var6')!=null) {echo "<input type = 'radio' name = id[".$num."][6] value = '6'></label> е) ".mysql_result($myrow,$num,'var6').'<br>';} if (mysql_result($myrow,$num,'var7')!=null) {echo "<input type = 'radio' name = id[".$num."][7] value = '7'></label> ж) ".mysql_result($myrow,$num,'var7').'<br>';} echo '<br>'; } echo ' <input type="submit" value = "Показать результаты"/>'; echo "</form>"; ?> Вот обработчик: <?php $db = mysql_connect('localhost', 'ItEconom','22304qqq'); mysql_select_db('IT', $db); $pravOtv = 0; foreach( $_POST['id'] as $i ) { //echo $i; foreach($i as $j ){ $otv = 0; $svet = 0; for($count =1; $count<8; $count++) { $tmp = mysql_query("select * FROM testProc3"); echo mysql_result($tmp,$i,'otv'.$count); if (intval(mysql_result($tmp,$i,'otv'.$count))) ++$svet; // Проверяю сколько всего правильных вариантов ответа в БД //echo $svet; // echo mysql_result($tmp,$i,'otv'.$count); // echo "\n"; if($j==mysql_result($tmp,$i,'otv'.$count))// Проверяю совпадают ли мои ответы с правильными { $otv++; } }} if($svet==$otv) $pravOtv++; // Если кол-во вариантов ответа совпало с решенными, то имеем один правильный ответ. // echo "j".count($j)."\n"; } printf(' <style type="text/css"> .print { font-size: 40px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #333366; margin: 200px 200px; } </style> '); echo' <div class = "print" >Правильных ответов: '.$pravOtv.'</div>'; ?> В итоге постоянно получаю: правильных ответов:0 |
Как подсчитать сколько в строке БД не NULL значений?
for($count =1; $count<8; $count++) { $tmp = mysql_query("select * FROM testProc3"); if (is_null(mysql_result($tmp,$i,'otv'.$count))) ++$svet; } Так почему-то иногда считает неправильно |
Часовой пояс GMT +3, время: 17:01. |