Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Результат тестирования 
:(
    Опции темы
6yha
Дата 29.12.2011, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.12.2011

Репутация: нет
Всего: нет



    
Уважаемые знатоки... Скажите нужно сделать результат тестирования... а именно привожу пример... Пользователь прошел тестирование и ему выбиваеться его результат например "ваша оценка 2" или например "Вы ответили 50%"

 Привожу пример моего скрипта:


Код

<?

 // Инициализируем сессии
 session_start();

 // Если тест еще не начинали проходить
 if(!isset($_SESSION['answers'])) {
 $id = 1;
 $_SESSION['answers'] = array(); 
 }

 // Массив с вопросами
 $questions = array(
 1 => 'Как сделать свой первый скрипт?',
 2 => 'Как его настроить?',
 3 => 'Как теперь сдать зачет?',
 );

 // Массив с вариантами ответов
 $options = array(
 1 => array( 1 => 'Первый вариант', 2 => 'Второй вариант', 3 => 'Третий вариант'), // Варианты ответа к первому вопросу 
 2 => array( 1 => 'Первый вариант', 2 => 'Второй вариант', 3 => 'Третий вариант'), // Варианты ответа ко второму вопросу
 3 => array( 1 => 'Первый вариант', 2 => 'Второй вариант', 3 => 'Третий вариант'), // Варианты ответа к третьему вопросу 
 ); 

 // Если посетитель ответил на один из вопросов
 if(isset($_GET['question']) && isset($_GET['answer'])) {
 $prevId = $_GET['question'] - 1;

 if(sizeof($questions) >= $prevId && sizeof($options[$prevId]) >= $_GET['answer']) {
 $_SESSION['answers'][$prevId]['answer'] = $_GET['answer'];
 $id = $_GET['question'];
 }
 // Если посетитель решил заново пройти тест 
 } else if(isset($_GET['newTest'])) {
 unset($_SESSION['answers']);
 header('Location: ' . $_SERVER['PHP_SELF']);
 exit;
 }

 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
 <html xmlns="">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Небольшой тест</title>
 </head>

 <body>
 <? if(isset($_GET['question']) && $_GET['question'] <= sizeof($questions) || $id == '1') { ?>
 <h3>Вопрос: <?=$questions[$id]?></h3>
 <h4>Варианты ответа</h4>
 <p>
 <?
 foreach($options[$id] as $key => $data) {
 echo $key . '. <a href="?question='.($id + 1).'&answer='.$key.'" />' . $data . '</a><br />'; 
 }
 ?>
 </p>
 <? } else { ?>

 <h2>Тест успешно пройден!</h2>
 <h3>Ваши ответы</h3>
 <?
 for($i = 1; $i <= sizeof($questions); $i++) {
 echo 'Вопрос: ' . $questions[$i] . '<br /> Ответ: ' . $options[$i][$_SESSION['answers'][$i]['answer']] . '<br /><br />'; 
 }
 ?>

 <? } ?> 
 <p><a href="?newTest=ok">Начать заново</a></p>
 </body>
 </html>



Буду вам очень благодарен....
PM MAIL   Вверх
s0lman
Дата 29.12.2011, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



А в чем вопрос, собственно?


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
6yha
Дата 29.12.2011, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.12.2011

Репутация: нет
Всего: нет



s0lman

Мне нужна помощь с кодом, ничего на ум не идет...
PM MAIL   Вверх
ksnk
Дата 29.12.2011, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Imho, нужна помошь с логикой  smile 

URL адрес на всем протяжении тестирования не должен меняеться.

Всю информацию о тестировании нужно хранить в сессии.
Номер текущего вопроса и ответы на предыдущие.

По заполнении результатов очередного вопроса - POST с результатами, заполнение результатов в сессии, увеличение номера текущего вопроса и переход на тот-же адрес header'ом. 

Если номер вопроса больше количества вопросов в тесте - тес закончен - возвращаем результат.

Если нужно начать новый тест - POST, очистка результатов в сессии, и перенаправление на адрес тестирования...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
6yha
Дата 30.12.2011, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.12.2011

Репутация: нет
Всего: нет



Нет ну конечно, в консультации я тоже могу сказать тоже самое... Спасибо... Но не могли бы вы помочь с кодом...
PM MAIL   Вверх
ksnk
Дата 30.12.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



6yha, С моей точки зрения - вопрос звучит "перепишите за меня 90% скрипта"  smile 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sanchezzz
  Дата 30.12.2011, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



старно  я тоже так подумал, вы поподайтесь решить эту легкую задачу вам же потом будет дальше легче в обучении 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
6yha
Дата 5.1.2012, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.12.2011

Репутация: нет
Всего: нет



Вот поэтому я у вас и прошу помощи...
PM MAIL   Вверх
ksnk
Дата 6.1.2012, 01:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Если бы мне пришлось хранить вопросы и список ответов в одном файле, я бы сделал что-то вроде вот такого.
Код

$questions = array(
 array('Как сделать свой первый скрипт?',array(
    'Первый вариант','Второй вариант', 'Третий вариант'
 )),
 array('Как его настроить?',array(
    'Первый вариант','Второй вариант', 'Третий вариант'
 )),
 array('Как теперь сдать зачет?',array(
    'Первый вариант','Второй вариант', 'Третий вариант'
 )),
); 


ну и сам код - что-то вроде вот этого
Код

<?php
session_start();
if(!isset($_SESSION['step'])){
  $_SESSION['step']='introduction';
}

if($_SERVER['REQUEST_METHOD']=='POST'){
  switch($_SESSION['step']){
    case 'questions':
       $_SESSION['answers'][$_SESSION['question']++]=$_POST['answer'];
       if ($_SESSION['question']>count($questions) ){
          $_SESSION['step'] = 'result';
       }
       break;
    case 'introduction':
    default:
      // начинаем тест
      $_SESSION['step'] = 'questions'; 
      $_SESSION['question']=0;
      $_SESSION['answers']=array();
  }


  header('Location: ' .'http://'
      .$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  exit;
}
else{
  switch ($_SESSION['step']) {
    case 'questions':
    // выводим вопрос № $_SESSION['question']
      break;
    case 'result':  
    // выводим результаты, используя $_SESSION['answer']
      break;
    
    case 'introduction':
    default:
      // выводим приглашение к началу тестирования
  }

}

каждое состояние выводит форму с action="" и method="POST"




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.