Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не получается написать обработчик теста.
 
 автор: Xenia   (23.05.2006 в 21:30)   письмо автору
 
 

Помогите доделать диплом. Я еще новичок. Делаю тест. Данные для теста беру из базы данных, и заполняю ими форму, а вот потом, что с этой формой делать не пойму. У меня в форме есть поле для ввода правильных ответов. Ответы вводятся цифрой, под которой находится ответ, и сверяется с полем в базе данных где хранится правильный ответ. Мне нужно проверить тест и поставить оценку.
<?
@$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();

?>
Может кто сможет помочь?

   
 
 автор: cheops   (23.05.2006 в 22:34)   письмо автору
 
   для: Xenia   (23.05.2006 в 21:30)
 

Файл test_rez.php у вас уже создан? Ответы хрняться в таблице test или в какой-то другой таблице?

   
 
 автор: Xenia   (24.05.2006 в 00:06)   письмо автору
 
   для: cheops   (23.05.2006 в 22:34)
 

Файл "test_rez.php" я пыталась создать, но он лишь только принимает вновь введенные данные в форму. А с базой данных даже не соединяется. Не понимаю почему. Сейчас это пустой файлик, в котором я пока незнаю что писать.
А данные хранятсяв таблице test. Она создана и успешно функционирует в других частях программы

   
 
 автор: cheops   (24.05.2006 в 12:05)   письмо автору
 
   для: 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($ver0);
  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-запросами
?>

   
 
 автор: Xenia   (24.05.2006 в 14:32)   письмо автору
 
   для: 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

Что делать,

   
 
 автор: Trianon   (24.05.2006 в 14:44)   письмо автору
 
   для: Xenia   (24.05.2006 в 14:32)
 


$result = mysql_query($query);
if(!$result) 
    exit( "Error in query:" . mysql_error() );
while($row = mysql_fetch_array($result)){

   
 
 автор: Xenia   (24.05.2006 в 16:43)   письмо автору
 
   для: 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

   
 
 автор: Trianon   (24.05.2006 в 16:54)   письмо автору
 
   для: Xenia   (24.05.2006 в 16:43)
 

Откуда берется $id?

   
 
 автор: Xenia   (24.05.2006 в 17:00)   письмо автору
 
   для: Trianon   (24.05.2006 в 16:54)
 

$id = $row["ID"];
Берется из базы данных test. Это для примера, хочу проверить взаимодействует ли скрипт с базой данных.

   
 
 автор: Trianon   (24.05.2006 в 17:02)   письмо автору
 
   для: Xenia   (24.05.2006 в 17:00)
 

Откуда там возьмется хоть что-то во второй строке скрипта, когда к базе Вы еше не обратились, а только собираетесь?

   
 
 автор: Xenia   (24.05.2006 в 18:23)   письмо автору
 
   для: Trianon   (24.05.2006 в 17:02)
 

не поняла, что-то! Можно пояснить. Я же в config.php подключилась к базе, а теперь работаю с запросами!
Пожалуйста объясните поподробнее!!!!

   
 
 автор: Trianon   (24.05.2006 в 18:42)   письмо автору
 
   для: 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);
?> 


 

   
 
 автор: Xenia   (24.05.2006 в 19:32)   письмо автору
 
   для: 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 и тому подобное?

   
 
 автор: Trianon   (24.05.2006 в 19:59)   письмо автору
 
   для: Xenia   (24.05.2006 в 19:32)
 

Я не понял следующее: Где скрипт, с помощью которого выбирается номер самого теста?

   
 
 автор: Xenia   (24.05.2006 в 22:06)   письмо автору
 
   для: 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);

?>
Вот тот скрипт!

   
 
 автор: Trianon   (24.05.2006 в 22:15)   письмо автору
 
   для: 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); 

   
 
 автор: Xenia   (24.05.2006 в 22:41)   письмо автору
 
   для: 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);

?>

Теперь и ошибку не пишет и не выводит ничего?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования