|
|
|
| Помогите доделать диплом. Я еще новичок. Делаю тест. Данные для теста беру из базы данных, и заполняю ими форму, а вот потом, что с этой формой делать не пойму. У меня в форме есть поле для ввода правильных ответов. Ответы вводятся цифрой, под которой находится ответ, и сверяется с полем в базе данных где хранится правильный ответ. Мне нужно проверить тест и поставить оценку.
<?
@$db=mysql_connect('localhost','root','');
mysql_select_db('BD_Xenia');
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$query = "SELECT * FROM test where ID=$id";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
$naz = $row["NAZVANIE_TESTA"];
$v_1 = $row["VOPROS_1"];
$o_a_1 = $row["OTVET_A_1"];
$o_b_1 = $row["OTVET_B_1"]; Ответы на 1 вопрос
$o_c_1 = $row["OTVET_C_1"];
$o_v_1 = $row["OTVET_VERNO_1"];(хранится правильный ответ на 1 вопрос)
$v_2 = $row["VOPROS_2"];
$o_a_2 = $row["OTVET_A_2"];
$o_b_2 = $row["OTVET_B_2"];Ответы на 2 вопрос
$o_c_2 = $row["OTVET_C_2"];
$o_v_2 = $row["OTVET_VERNO_2"];(хранится правильный ответ на 2 вопрос)
$v_3 = $row["VOPROS_3"];
$o_a_3 = $row["OTVET_A_3"];
$o_b_3 = $row["OTVET_B_3"];Ответы на 3 вопрос
$o_c_3 = $row["OTVET_C_3"];
$o_v_3 = $row["OTVET_VERNO_3"];(хранится правильный ответ на 3 вопрос)
$v_4 = $row["VOPROS_4"];
$o_a_4 = $row["OTVET_A_4"];
$o_b_4 = $row["OTVET_B_4"];Ответы на 4 вопрос
$o_c_4 = $row["OTVET_C_4"];
$o_v_4 = $row["OTVET_VERNO_4"];(хранится правильный ответ на 4 вопрос)
$v_5 = $row["VOPROS_5"];
$o_a_5 = $row["OTVET_A_5"];
$o_b_5 = $row["OTVET_B_5"];Ответы на 5 вопрос
$o_c_5 = $row["OTVET_C_5"];
$o_v_5 = $row["OTVET_VERNO_5"];(хранится правильный ответ на 5 вопрос)
$v_6 = $row["VOPROS_6"];
$o_a_6 = $row["OTVET_A_6"];
$o_b_6 = $row["OTVET_B_6"];Ответы на 6 вопрос
$o_c_6 = $row["OTVET_C_6"];
$o_v_6 = $row["OTVET_VERNO_6"];(хранится правильный ответ на 6 вопрос)
echo'
<FORM action="test_rez.php" method="post">
<CENTER><p><font face="Arial, Helvetica, sans-serif" size="4">'.$naz.'</p></font><HR NOSHADE WIDTH="50%"></CENTER><br>
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_1.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_1.'</p>
<p><IMG SRC="2.gif"> '.$o_b_1.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_1.'</p>
Номер ответа:
<input type="text" name="test_1" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_2.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_2.'</p>
<p><IMG SRC="2.gif"> '.$o_b_2.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_2.'</p>
Номер ответа:
<input type="text" name="test_2" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_3.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_3.'</p>
<p><IMG SRC="2.gif"> '.$o_b_3.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_3.'</p>
Номер ответа:
<input type="text" name="test_3" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_4.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_4.'</p>
<p><IMG SRC="2.gif"> '.$o_b_4.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_4.'</p>
Номер ответа:
<input type="text" name="test_4" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_5.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_5.'</p>
<p><IMG SRC="2.gif"> '.$o_b_5.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_5.'</p>
Номер ответа:
<input type="text" name="test_5" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_6.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_6.'</p>
<p><IMG SRC="2.gif"> '.$o_b_6.'</p>
<p><IMG SRC="3.gif"> '.$o_c_6.'</p>
Номер ответа:
<input type="text" name="test_6" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<br><center><INPUT TYPE="submit"name="go" VALUE="Посмотреть результат"></center>';
}
mysql_free_result($result);
mysql_close();
?>
Может кто сможет помочь? | |
|
|
|
|
|
|
|
для: Xenia
(23.05.2006 в 21:30)
| | Файл test_rez.php у вас уже создан? Ответы хрняться в таблице test или в какой-то другой таблице? | |
|
|
|
|
|
|
|
для: cheops
(23.05.2006 в 22:34)
| | Файл "test_rez.php" я пыталась создать, но он лишь только принимает вновь введенные данные в форму. А с базой данных даже не соединяется. Не понимаю почему. Сейчас это пустой файлик, в котором я пока незнаю что писать.
А данные хранятсяв таблице test. Она создана и успешно функционирует в других частях программы | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 00:06)
| | Соединение с базой данных можно осуществить при помощи следующего файла config.php
<?php
///////////////////////////////////////////////////
// Панель администрирования
///////////////////////////////////////////////////
// сейчас выставлен сервер локальной машины
$dblocation = "localhost";
// Имя базы данных, на хостинге или локальной машине
$dbname = "bd";
// Имя пользователя базы данных
$dbuser = "root";
// и его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) {
exit( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx) ) {
exit( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
}
// Определяем версию сервера
$query = "SELECT VERSION()";
$ver = mysql_query($query);
if(!$ver) exit("Ошибка при определении версии MySQL-сервера");
$version = mysql_result($ver, 0);
list($major, $minor) = explode(".", $version);
// Если версия выше 4.1 сообщаем серверу, что будем работать с
// кодировкой cp1251
$ver = $major.".".$minor;
if((float)$ver >= 4.1)
{
mysql_query("SET NAMES 'cp1251'");
}
?>
|
который необходимо влкючать в файлы, где будет осуществлятся доступ к базе данных при помощи конструкции require_once()
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Дальнейшая работа с SQL-запросами
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.05.2006 в 12:05)
| | <?php
require_once("config.php");
$query = "SELECT * FROM test where ID=$id";
$query = "SELECT * FROM test where ID=$id";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
echo $id;
}
mysql_free_result($result);
?>
Вот к примеру что я пишу в файте test_rez.php. Файл config.php создан, в нем написано, то что вы указали. Как с базой соединятся я знаю, я ведь ее использую в других частях программы, и так все работает.
А здесь выдает вот такую ошибку!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\www\mysite\test_rez.php on line 9
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\www\mysite\test_rez.php on line 19
Что делать, | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 14:32)
| |
$result = mysql_query($query);
if(!$result)
exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 14:44)
| | <?
require_once("config.php");
$query = "SELECT * FROM test where ID=$id";
$result = mysql_query($query);
if(!$result)
exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
echo $id;
}
mysql_free_result($result);
?>
Выдает ошибку
Error in query:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 16:43)
| | Откуда берется $id? | |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 16:54)
| | $id = $row["ID"];
Берется из базы данных test. Это для примера, хочу проверить взаимодействует ли скрипт с базой данных. | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 17:00)
| | Откуда там возьмется хоть что-то во второй строке скрипта, когда к базе Вы еше не обратились, а только собираетесь? | |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 17:02)
| | не поняла, что-то! Можно пояснить. Я же в config.php подключилась к базе, а теперь работаю с запросами!
Пожалуйста объясните поподробнее!!!! | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 18:23)
| | попробуйте укоротить запрос так:
<?
require_once("config.php");
$query = "SELECT * FROM test";
$result = mysql_query($query);
if(!$result)
exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
echo $id.'<br>';
}
mysql_free_result($result);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 18:42)
| | Да так получается, но мне нужно вытащить из базы определенную запись.
Представь, у меня в базе хранятся тесты, каждая запись это 1 тест. У меня есть файл формы теста, которую я заполняю из базы данных
<?
@$db=mysql_connect('localhost','root','');
mysql_select_db('BD_Xenia');
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$query = "SELECT * FROM test where ID=$id";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
$naz = $row["NAZVANIE_TESTA"];
$v_1 = $row["VOPROS_1"];
$o_a_1 = $row["OTVET_A_1"];
$o_b_1 = $row["OTVET_B_1"];
$o_c_1 = $row["OTVET_C_1"];
$o_v_1 = $row["OTVET_VERNO_1"];
$v_2 = $row["VOPROS_2"];
$o_a_2 = $row["OTVET_A_2"];
$o_b_2 = $row["OTVET_B_2"];
$o_c_2 = $row["OTVET_C_2"];
$o_v_2 = $row["OTVET_VERNO_2"];
$v_3 = $row["VOPROS_3"];
$o_a_3 = $row["OTVET_A_3"];
$o_b_3 = $row["OTVET_B_3"];
$o_c_3 = $row["OTVET_C_3"];
$o_v_3 = $row["OTVET_VERNO_3"];
$v_4 = $row["VOPROS_4"];
$o_a_4 = $row["OTVET_A_4"];
$o_b_4 = $row["OTVET_B_4"];
$o_c_4 = $row["OTVET_C_4"];
$o_v_4 = $row["OTVET_VERNO_4"];
$v_5 = $row["VOPROS_5"];
$o_a_5 = $row["OTVET_A_5"];
$o_b_5 = $row["OTVET_B_5"];
$o_c_5 = $row["OTVET_C_5"];
$o_v_5 = $row["OTVET_VERNO_5"];
$v_6 = $row["VOPROS_6"];
$o_a_6 = $row["OTVET_A_6"];
$o_b_6 = $row["OTVET_B_6"];
$o_c_6 = $row["OTVET_C_6"];
$o_v_6 = $row["OTVET_VERNO_6"];
echo'
<FORM action="test_rez.php" method="post">
<CENTER><p><font face="Arial, Helvetica, sans-serif" size="4">'.$naz.'</p></font><HR NOSHADE WIDTH="50%"></CENTER><br>
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_1.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_1.'</p>
<p><IMG SRC="2.gif"> '.$o_b_1.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_1.'</p>
Номер ответа:
<input type="text" name="test_1" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_2.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_2.'</p>
<p><IMG SRC="2.gif"> '.$o_b_2.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_2.'</p>
Номер ответа:
<input type="text" name="test_2" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_3.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_3.'</p>
<p><IMG SRC="2.gif"> '.$o_b_3.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_3.'</p>
Номер ответа:
<input type="text" name="test_3" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_4.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_4.'</p>
<p><IMG SRC="2.gif"> '.$o_b_4.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_4.'</p>
Номер ответа:
<input type="text" name="test_4" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_5.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_5.'</p>
<p><IMG SRC="2.gif"> '.$o_b_5.'</p>
<p><IMG SRC="3.gif"> ' .$o_c_5.'</p>
Номер ответа:
<input type="text" name="test_5" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<p><font face="Arial, Helvetica, sans-serif" size="4">'.$v_6.'</p></font><br>
<p><IMG SRC="1.gif"> '.$o_a_6.'</p>
<p><IMG SRC="2.gif"> '.$o_b_6.'</p>
<p><IMG SRC="3.gif"> '.$o_c_6.'</p>
Номер ответа:
<input type="text" name="test_6" value="" size="5" maxlength="150" ><HR NOSHADE WIDTH="100%">
<br><center><INPUT TYPE="submit"name="go" VALUE="Посмотреть результат"></center>';
}
mysql_free_result($result);
mysql_close();
?>
Дальше мне нужно написать скрипт, который будет сверять полученные ответы, с верными, а верные ответы хранятся в базе.
Например, пользователь прошел тест №1(ID=1), теперь он хочет узнать результат, тоесть получить оценку, он нажимает на кнопочку и отправляет данные формы на обработку скрипту
<?
@$db=mysql_connect('localhost','root','');
mysql_select_db('BD_Xenia');
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$query = "SELECT * FROM test ";
$result = mysql_query($query);
if(!$result)
exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
?????????????????????????????????????????//
}
mysql_free_result($result);
?>
В этом скрипте мне нужно вытащить запись у которой ID=1, а если же пользователь прошел тест №2(ID=2), то вытаскивал запись у которой ID=2 и тому подобное? | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 19:32)
| | Я не понял следующее: Где скрипт, с помощью которого выбирается номер самого теста? | |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 19:59)
| | <?
@$db=mysql_connect('localhost','root','');
mysql_select_db('BD_Xenia');
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$query = "SELECT * FROM test";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row["ID"];
$naz = $row["NAZVANIE_TESTA"];
echo'<p>'.$naz.'('.$id.')</p>';
echo'
<FORM action="Test.php" method="post">
Выберите тест. Введите код теста!!!
<input type="text" name="id" value="" size="5" maxlength="150" >
<INPUT TYPE="submit"name="doUpload" VALUE="Начать">
</FORM>';
}
mysql_free_result($result);
?>
Вот тот скрипт! | |
|
|
|
|
|
|
|
для: Xenia
(24.05.2006 в 22:06)
| | Значит id приходит из формы, переданной методом POST
Тогда фрагмент test.php, который у Вас не пошел, нужно изменить так:
$id = intval($_POST['id']);
$query = "SELECT * FROM test where ID = $id";
$result = mysql_query($query);
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.05.2006 в 22:15)
| | mysql_select_db('BD_Xenia');
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
$id = intval($_POST['id']);
$query = "SELECT * FROM test where ID = $id";
$result = mysql_query($query);
if(!$result)
exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){
$naz = $row["NAZVANIE_TESTA"];
echo'<p><font color= "9933ff" face="Arial Black"size="2"> '.$naz.'</font></p><HR NOSHADE WIDTH="100%">';
}
mysql_free_result($result);
?>
Теперь и ошибку не пишет и не выводит ничего? | |
|
|
|