Помогни ни да направим Uroci.net по - богат! Добави урок

Система за тестове

PHP » PHP
shark5   трудност:    видян: 10412

Това е една опростена система за тестове. Тя има следната структура:


1. addtest.php - файла от където се добавят тестовете
2. edittest.php - файла от където се редактират и трият тестовете
3.addvapros.php - файла от където се добавят въпроси към тестовете
4. tests.php - файла от който се решават тестовете
5. questions.php - файла от където се редактират и трият въпросите към тестовете
6. config.php - конфигуриращ файл
7. testresults.php - файла от който се преглеждат резултатите от тестовете.

Първо ще започнем с таблиците в базата данни те са три: за въпросите за тестовете и за резултатите.

 

CREATE TABLE `questions` (
`id` int(12) NOT NULL auto_increment,
`testid` int(12) NOT NULL default '0',
`vapros` varchar(130) collate utf8_unicode_ci NOT NULL default '',
`a` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`b` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`c` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`otg` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`avtor` varchar(25) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ;

CREATE TABLE `results` (
`ime` varchar(25) collate utf8_unicode_ci NOT NULL default '',
`test` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`verni` int(4) NOT NULL default '0',
`greshni` int(4) NOT NULL default '0',
`koef` int(12) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `tests` (
`id` int(12) NOT NULL auto_increment,
`ime` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL default '',
`opisanie` mediumtext character set utf8 collate utf8_unicode_ci NOT NULL,
`avtor` varchar(25) character set utf8 collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; 

 

сега следва config.php 

 

<?
$hostname = "hosta";
$user = "potrebitelq";
$pass = "parola";
$database = "baza danni";
$conn = @mysql_connect("$hostname","$user","$pass");
@mysql_select_db($database) or die(mysql_error());
mysql_query("SET names cp1251");
?>

 

попълвате си данните за хоста потребителя паролата и базата данни и сте готови.
сега другите файлове.
addtest.php 

 

<?php
include "config.php";
if (!$_POST['submit']) {
echo "Въведете заглавие на теста:<br>";
echo "<form name='test' method='POST' action=''>
<input type='text' name='ime' size='52'><br>
Въведете описание към теста:<br>
<textarea name='opisanie' cols='40' rows='5' class='form_elements_text'></textarea><br>
<input type='submit' name='submit' value='Добавяне'>
</form>
можете да добавите въпроси към тях от <a href='addvapros.php'>ТУК</a>";
}
else {
$ime = $_POST['ime'];
$ime = trim(strip_tags(addslashes($ime))); //slagame malko za6tita
$opisanie = $_POST['opisanie'];
$opisanie = trim(strip_tags(addslashes($opisanie))); // tuk sa6to
$query = "INSERT INTO tests (ime, opisanie) VALUES ('$ime', '$opisanie')";
$res = mysql_query($query) or die (mysql_error()); //dobavqme testa
if ($res) { echo "Теста е добавен успешно. Можете да добавите въпроси към него от <a href='addvapros.php'>тук</a>"; }
}
?>

 

edittest.php 

 

<?php
include "config.php";
$vapros = $_GET['vapros'];
$edit = $_GET['edit'];
if ($edit) { // ako sme izbrali redaktirane na test
if ($_POST['submit']) {
$ime = $_POST['ime'];
$opisanie = $_POST['opisanie'];
$sql = "UPDATE tests SET ime = '$ime', opisanie = '$opisanie' WHERE id = '$edit'";
$res = mysql_query($sql) or die (mysql_error());
echo "Теста е редактиран успешно";
echo "<br><input type='button' onclick='javascript: history.go(-2);' name='back' value='Назад'>";
}
else {
$sql = "SELECT * FROM tests WHERE id = '$edit'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
echo "<form name='edittest' method='POST'>
Заглавие: <input type='text' name='ime' value='$row[ime]'><br>
Въведете описание към теста:<br>
<textarea name='opisanie' cols='40' rows='5' class='form_elements_text'>$row[opisanie]</textarea><br>
<input type='submit' name='submit' value='Редактирай'></form>
";
}
}
?>

 

addvapros.php 

 

 <?php
include "config.php";
if (!$_POST['submit']) {
$res = "SELECT * FROM tests";
$ras = mysql_query($res);
echo "<form method='POST'>
Тест:
<select name='testid'>";
while ($row = mysql_fetch_array($ras)) {
echo "<option value='$row[id]'>$row[ime]</option>";
}
echo "</select><br>";
echo "Въпрос:<br>";
echo "<input type='text' name='vapros' size='40'><br>
Отговор a:<br>
<input type='text' name='a' size='40'><input type='radio' name='otg' value='a'><br>
Отговор b:<br>
<input type='text' name='b' size='40'><input type='radio' name='otg' value='b'><br>
Отговор c:<br>
<input type='text' name='c' size='40'><input type='radio' name='otg' value='c'><br>
<input type='submit' name='submit' value='Добавяне'>
</form>";
}
else {
$sql = "SELECT id FROM questions ORDER BY id DESC";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$id = $row[id] + 1;
$testid = $_POST['testid'];
$otg = $_POST['otg'];
if (!$otg) {
echo "Посочете верния отговор";
} else {
$vapros = $_POST['vapros'];
$a = $_POST['a'];
$a = trim(strip_tags(addslashes($a)));
$b = $_POST['b'];
$b = trim(strip_tags(addslashes($b)));
$c = $_POST['c'];
$c = trim(strip_tags(addslashes($c)));
$otg = $otg;
$query = "INSERT INTO questions (testid, vapros, a, b, c, otg)
VALUES ('$testid', '$vapros', '$a', '$b', '$c', '$otg')";
$res = mysql_query($query) or die (mysql_error());
if ($res) { echo 'Въпроса е добавен успешно.<br><a href="javascript:history.go(-1)">Назад</a>'; }
}
}
?>

 

tests.php

 

 <?php
include "config.php";
$id = $_GET['id'];
if ($id) {
$sql = "SELECT * FROM questions WHERE testid = '$id' ORDER BY id ASC";
$res = mysql_query($sql) or die(mysql_error());
if (!$_POST['submit']) {
echo "<form name='test' method='POST'>";
$vapros = 1;
while ($row = mysql_fetch_array($res)) {
echo "$vapros. $row[vapros]";
echo "<br><input name='$row[id]' type='radio' value='a'>".$row[a];
echo "<br><input name='$row[id]' type='radio' value='b'>".$row;
echo "<br><input name='$row[id]' type='radio' value='c'>".$row[c]."<br>";
$vapros++;
}
echo "<br><input type='button' onclick='javascript: history.back(-1);' name='back' value='Назад'>
<input type='submit' name='submit' value='Провери'> <input type='reset' name='reset' value='Наново'><br>";
echo "</form>";
}
else {
$veren = 0;
$gre6en = 0;
$i = 0;
while($row = mysql_fetch_array($res)) {
$id = $row[id];
$otg = $_POST[$id];
$verniq = $row[otg];
if ($row[otg] == $otg) {
$i++;
$veren++;
echo "<span class='true'>Върпос $i: Вярно!</span><br>";
} else {
$i++;
echo "<span class='false'>Върпос $i: Грешно! Верния отговор е: $row[otg] - $row[$verniq]</span><br>";
$gre6en++;
} }
echo "Верни отговори: ".$veren;
echo "<br>Грешни отговори: ".$gre6en;
echo "<br>";
$all = $veren + $gre6en;
$koef = $veren/$all;
$koef = $koef*100;
$koef = round($koef);
$id = $_GET['id'];
$zaqvka = "SELECT * FROM tests WHERE id = '$id'";
$result = mysql_query($zaqvka) or die (mysql_error());
$row1 = mysql_fetch_array($result);
$test = $row1[ime];
echo "Вашия резултат е: $koef%<br>";
$zaqvka1 = "INSERT INTO `results` (test, verni, greshni, koef) VALUES ('$test', '$veren', '$gre6en', '$koef')";
$res = mysql_query($zaqvka1) or die (mysql_error());
echo"Вашия резултат се записа в таблицата с резултатите и можете да видите резултатите на другите потребители от
<a href='testresults.php'>ТУК</a>";
}
}
else {
$sql = "SELECT * FROM tests";
$res = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($res)) {
echo "<a href='tests.php?id=$row[id]'>$row[ime]</a><br>
$row[opisanie]<br><br>";
}
}
?>

questions.php 

 

 <?
include "config.php";
if (!$_GET['edit'] && !$_GET['delete']) {
$sql = "SELECT * FROM questions";
$ras = mysql_query($sql) or die (mysql_error());
echo "<table border='1' width='450'>
<tr><td width='145'>Тест</td>
<td width='235'>Въпрос</td>
<td width='70'>Функции</td>";
while ($row = mysql_fetch_array($ras)) {
$sql1 = "SELECT * FROM tests where id = $row[testid]";
$res1 = mysql_query($sql1);
$row1 = mysql_fetch_array($res1);
echo "<tr><td width='145'>$row1[ime]</td>
<td width='235'>$row[vapros]</td>
<td width='70' align='center'><a href='questions.php?edit=$row[id]'><img src='images/edit.png' alt='Редактирай'></a> 
<a href='questions?delete=$row[id]'><img src='images/del.png' alt='Изтрий'></a></td>";
}
echo "</table>";

}
elseif ($_GET['edit']) {
$edit = $_GET['edit'];
$sql1 = "SELECT * FROM questions";
$ras1 = mysql_query($sql1) or die (mysql_error());
$row1 = mysql_fetch_array($ras1);
$testid = $row1[testid];
$vapros = $_GET['edit'];
$sql = "SELECT * FROM questions WHERE id = '$vapros'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$sql2 = "SELECT * FROM tests WHERE id = '$testid'";
$res2 = mysql_query($sql2);
$row2 = mysql_fetch_array($res2);
if ($_POST['redaktirai']) {
$otg = $_POST['otg'];
$vapros = $_POST['vapros'];
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
if ($otg == NULL) {
$zaqvka = "UPDATE questions SET vapros = '$vapros', a = '$a', b = '$b', c='$c' WHERE id = '$edit'";
$res = mysql_query($zaqvka) or die (mysql_error());
echo "Въпроса е обновен успешно";
} else {
$zaqvka = "UPDATE questions SET vapros = '$vapros', a = '$a', b = '$b', c='$c', otg = '$otg' WHERE id = '$edit'";
$res = mysql_query($zaqvka) or die (mysql_error());
echo "Въпроса е обновен успешно";
}
} else {
$otg = $row[otg];
echo "<form name='editform' method='post' action=''>
Тест: $row2[ime] <br>
Въпрос: <input type='text' name='vapros' value='$row[vapros]'><br>
Отговор А: <input type='text' name='a' value='$row[a]'><input type='radio' name='otg' value='a'><br>
Отговор Б: <input type='text' name='b' value='$row'><input type='radio' name='otg' value='b'><br>
Отговор В: <input type='text' name='c' value='$row[c]'><input type='radio' name='otg' value='c'><br>
<input type='submit' name='redaktirai' value='Редактирай'><br>
Сега верния отговор е <b>$otg - $row[$otg]</b>. Ако искате да го смените изберете друг ако ли не не избирайте нищо.";
}
}
elseif ($_GET['delete']) {
if ($_POST['submit']) {
$delete = $_GET['delete'];
$sql = "DELETE FROM questions WHERE id='$delete'";
$result = mysql_query($sql) or die (mysql_error());
echo "Въпроса е изтрит успешно.<br>";
echo '<input type="button" onclick="javascript: history.go(-2);" name="back" value="Назад">';
} else {
echo "<center><div class='confirm'>Сигурен ли сте че искате да изтриете въпроса?<br>
<form name='delete' method='POST'>
<input type='submit' name='submit' value='Да'>   
<input type='button' onclick='javascript: history.back(-1);' name='back' value='Не'>
</form></div></center>
";
}
}
?>

testresults.php

 

<?
include "config.php";
$sql = "SELECT * FROM results ORDER BY koef DESC";
$res = mysql_query($sql);
echo "<table border='0'>
<tr><td class='glavno_td'>Тест</td><td class='glavno_td'>Верни</td>
<td class='glavno_td'>Грешни</td><td class='glavno_td'>Резултат</td>";
while($row = mysql_fetch_array($res)) {
echo "<tr><td>$row[test]</td><td>$row[verni]</td><td>$row[greshni]</td><td>$row[koef]%</td>";
}
echo "</table>";
?>

 

СИСТЕМА Е ПРЕДОСТАВЕНА ЗА UROCI.NET  и не искам да се копира !!!! 

 



Сподели урока:



Коментари (7)

smoukchety на 17.04 2010 в 19:15ч.
мда, много е готино, но дава и много грешки, добре за тея, които могат да си ги оправят и сами (blush)
Aspire5536g на 18.03 2011 в 22:30ч.
smoukchety имаш грешка. Никъде не дава грешка евала доста хубав урок :)
cute997 на 05.06 2011 в 20:49ч.
Много ми пука за кого е предоставена системата , какво ми пречи да я копна :P :) :) :)
maria88 на 14.07 2011 в 18:29ч.
може ли tests.php да се настрои да изпраща до базата отговорите на въпросите, които е посочил решаващия теста?
koftii на 24.06 2012 в 10:30ч.
Защо когато посоча верния отговор и като отида на теста, на мястото на верния отговор пише "array" а не отговора?
koftii на 24.06 2012 в 10:44ч.
Моя грешка, винаги отговор B излиза array, не верния ..
koftii на 24.06 2012 в 10:57ч.
Оправих се. :) Проблема идва от tests.php на ред
echo "".$row;

автора е забравил да напише [b] за това не става, направете го =>
echo "".$row[b];

ПТ: Супер системка браво :)

Регистрирайте се, за да добавите коментар


Калдейта Ком ЕООД - © 2003-. Всички права запазени.
Препоръчваме: IT Новини