Урок 12. Оформление результатов
Дата публикации: 21-01-2015

От автора: Этот урок будет, пожалуй, последним из запланированных уроков по созданию пользовательской части системы тестирования. В этом уроке нам осталось лишь добавить стили в файл CSS для необходимого оформления вывода результатов тестирования.
Все уроки курса:
Метки: система тестирования, тестирование
Да, конечно хотелось бы админку. Спасибо огромное за уроки!
Пожалуйста)
Здравствуйте!!! Для начало я хотел бы вас по благодарить за отличные уроки по созданию системы тестирования!!! Ну и конечно хотелось бы увидеть админку, это было бы очень даже здорово.
Здравствуйте.
Продолжение обязательно будет.
Спасибо за отзыв
Здравствуйте! Спасибо за ответ! Буду ждать админку
Андрей а можно реализовать функционал добавления вопросов ? у меня такой вопрос когда я добавляю вопросы вопросы падают допустим в таблицу questions а ответы на эти вопросы в таблицу answers(id, id_question, name, correct_answer), одновременно как взять id вопроса ?
Функцияmysqli_insert_id возвращает id последней добавленной записи.
Здравствуйте Андрей! Хотел вам сказать огромное спасибо за такой замечательный урок. Тест проста получилось супер. Если есть возможность или как то еще для теста сделать запрет доступа чтобы не все проходили тест а только кому вы даёте доступ. И знать на сколько ответил человек проходимый тест.
Здравствуйте.
Для ограничения доступа нужно будет писать систему авторизации, как минимум. Ну а для хранения результатов, соответственно, сохранять их в БД… возможно, в дальнейшем добавим что-то из этого)
Здравствуйте! Спасибо за ответ.
Здравствуйте Андрей! Извините за нелепый вопрос, я хотел бы узнать, поинтересоваться когда вы будете опубликовывать администраторскую часть? Просто не хотел бы пропустить этот момент =). Заранее СПАСИБО!!!
Здравствуйте. Я пока что даже не приступал к ее написанию, так что пока даже и нечего пропускать)
Сказать более-менее точно, когда появятся уроки по админке, я пока что не готов, поскольку есть более приоритетные задачи, которые вначале нужно решить… но, думаю, не раньше, чем через месяц.
Здравствуйте! Спасибо за уроки! Подскажите как изменить код чтобы выбирались несколько правильных ответов не сильно меняя код!! …Вместо radio сделал checkbox..
Здравствуйте! Уроки супер! Как можно сделать чтобы вопросы выводились в случайном порядке…
Как вариант, для этого достаточно в конце запроса функции get_test_data добавить сортировку в случайном порядке: ORDER BY RAND()
а на сайт в вордпресе можно подключить?
Да. Хотя лучше использовать специализированный плагин, уверен, такой должен быть и не один.
скажите пожалуйста, куда именно в конце функции вставлять сортировку в случайном порядке
Не в конец функции, а в конец sql-запроса функции get_test_data(). SQL-запрос там всего один.
Спасибо за уроки! Админку тоже буду ждать с нетерпением))
Здравствуйте Андрей! Спасибо за уроки! Мне очень понравились уроки админку буду ждать с нетерпением =)
Здравствуйте! Хотел вам сказать огромное спасибо за такие замечательные уроки. С не терпением буду ждать админскую часть!!! Надеюсь не долго будем ждать продолжение замечательных уроков)))) Если есть возможность как узнать на сколько ответил человек проходимый тест.
Скачал архив, при запуске белое окно страницы и надпись: Нет тестов
В чем может быть дело ?
Слишком мало данных, чтобы дать конкретный ответ. Возможно что-то не так с БД.
Я подключил БД и залил дамп из архива.
Для получения списков тестов используется запрос SELECT * FROM test WHERE enable = ’1′
А в дампе БД в таблице test отсутствует поле enable со значениями, по этому и ошибка.
Вот в этом и ошибка. Смотрите все уроки по порядку, а не выборочно, это поле добавляется в таблицу в одном из уроков.
Здравствуйте! Извините, а админ панель скоро будет?
Здравствуйте. Как только дойдут руки. Сейчас, к сожалению, есть более первоочередные задачи.
Но ведь не плохо было бы в скачиваемом архиве исправить данную ошибку…
Зачем мне смотреть все уроки, когда мне просто нужен готовый скрипт ?
Исходники уже выложены и изменяться не будут. Если Вам нужен дамп БД, в которой включено данное поле, тогда создайте тему на нашем форуме, и я выложу его там. У нас в первую очередь обучающий проект, не магазин готовых решений. Уроки носят обучающий характер и по ним можно создать нужный скрипт. Если же Вы не хотите смотреть урок, а хотите получить готовый скрипт, тогда такой скрипт можно поискать в сети.
Что же вы так к своим читателям и посетителям блога…
Если вы выкладываете в паблик свои наработки, почему же их нельзя брать в виде готовых решений?
В сети, кстати, ничего подобного за бесплатно нет…
По этому и остановился на вашем уроке-решении, спасибо за ваши труды.
Повторюсь еще раз, в паблик мы выкладываем не готовые решения, а уроки и исходники к ним. Я, по-моему, пошел Вам навстречу и предложил вариант создать тему на форуме, в которой я выложу дамп БД. Вы можете воспользоваться этим решением, как мне кажется, ничего обидного я не предложил.
Пожалуйста.
Здравствуйте! Спасибо за Ваши ответы!
Такой вопрос, как можно сделать чтоб вопросы выводились определенным пользователям, по категориям (прим. Врачи высшего категории, медсестры 1-го и т.д) и критерий ответов для высшей категории 80 процентов, для первой категории 60 процентов?
Здравствуйте.
Для этого необходимо добавить регистрацию + авторизацию для пользователей, реализовать систему ролей (должностей) и, в зависимости от той или иной должности, использовать тот или иной критерий. В общем, необходимо существенное расширение скрипта. Возможно, что-то подобное и будет реализовано в дальнейшем.
Здравствуйте! Спасибо за уроки! Все понятно и легко. Жду админку, будет интересно как это реализовать. Заранее спасибо =)
Здравствуйте. Да, продолжение обязательно будет и будет показана реализация админской части.
Здравстуйте! Спасибо очень познавательно.Только у меня одна проблема. Сдела в все как у вас, но почему то после вывода результата теста русские символы не хотят нормально отображаться. В чем может быть дело? И еще такой вопрос. Как можно организовать шифрование данных или в данном примере это не требуется ? Заранее спасибо!
Вопрос с текстом отпал. У меня в текстовом редакторе кодировка не та стояла. Поменял на UTF-8. И заработало. Ждем админской части с нетерпением!
Здравствуйте, Андрей. Спасибо Вам огромное за ваши уроки, узнал много нового. А за то, что Вы максимально просто и доступно объясняете свои решения, Вам мой отдельный респект! Мне, как новичку, все было предельно ясно. Жаль, что у Вас не дошли руки до админской части, с радостью украл бы пару решений =)
Здравствуйте, Эдуард. Спасибо за отзыв
А до админской части руки обязательно дойдут, так что шанс украсть пару решений еще представится
Здравствуйте Андрей! Спасибо за уроки!
Я долго искаль…
у вас тут много бесплатных уроков, буду всегда заходит на ваш сайт.
Мне очень понравились уроки,ограниченную доступ и админку буду ждать с нетерпением )))
Рахмет!!!
Пожалуйста, Рахмет
Здравствуйте Андрей! Спасибо за уроки!
Скажите пожалуйста, когда выйдут уроки по ограниченную доступа и админку буду ждать с нетерпением.
Здравствуйте, Денис. На днях мы уже открыли Премиум-раздел сайта, в котором серия уроков будет продолжена.
Спасибо за уроки. Сделайте, пожалуйста, уроки по админке. Очень нужны такие уроки.
Пожалуйста)
Уроки по админке скорее всего будут, но как скоро их ждать — не подскажу… сейчас много других уроков уже стоит в ближайшем плане.
Без админки, авторизации и выведения статистики совсем не интересно.
Подписался на премиум уроки только из -за того что сказали что в первом уроке все будет и админка и статистика, а оказывается ничего нету, разочарован.
Курс пока не закончен. Ну а перед подпиской Вы могли ознакомиться со списком вышедших уроков — там нет пока что уроков по созданию админки. Также Вы могли уточнить у нас перед оформлением подписки, есть ли уроки по созданию админки.
Ну когда же выйдет админская часть???, она мне очень, очень нужна.
К сожалению, в ближайших планах она пока не стоит.
Заплачу 2 т.р за то кто мне сделает админку со статистикой. скайп denver-seo
Админкууу плиизз))
Помогите, плиз, ошибку выдает,
Fatal error: Cannot re-assign auto-global variable _POST in C:\xampp\htdocs\testing\functions.php on line 93,
как её можно исправить?
Максим, в функции get_test_data_result() уберите последний параметр $_POST в файле functions.php (строка 93) и в файле index.php (строка 16). Это должно решить проблему.
Да, благодарю, этой ошибки больше не выходит, но пишет «Нет тестов», причем прошло подключение к БД , в чем причина может быть? я многого не понимаю, начал изучать недавно
Толькоотладка кода поможет в этом случае.
Если вы знаете что с данной ошибкой сталкивается так много людей, почему вы не вложите нормальный код, а не тот что с вашими ошибками. Всем обязательно наступить на грабли?
Потому что люди постоянно сталкиваются с ошибками и учатся на ошибках, исправляя их, только так происходит нормальный процесс обучения. Если же человек всегда будет копировать идеальный код и не будет уметь находить и исправлять ошибки, тогда, столкнувшись с ошибкой, он просто не сможет ее исправить и решить проблему. Когда урок записывался, то он записывался на версии PHP, на которой этот код не приводил к данной ошибке (так что моих ошибок в коде нет). В новых версиях PHP такая ошибка имеет место быть и будет только плюсом, если Вы попытаетесь ее решить самостоятельно. Если же этого сделать не получится, тогда есть комментарии, в которых я попробую подсказать и помочь.
Подскажите пожалуйста. Как результаты теста записывать в БД? Заранее спасибо.
Создать соответствующие таблицы для пользователей и результатов и описать в коде логику, которая позволит сохранить результаты. В рамках комментария, как Вы понимание, на такой общий вопрос что-то более конкретное сложно ответить.
Здраствуйте! Тест очень понравился. Как можно этот тест сделать для авторизованных пользователей, у нас образовательный сайт Вуза. Как реализовать чтобы на главной странице сайта выводились с именами пользователей которые сдали тесты? Спасибо!
Здравствуйте.
Для этого потребуется реализовать систему регистрации и авторизации. Доступ к тесту предоставлять только авторизованному пользователя и после прохождения теста результаты записывать в таблицу БД. Соответственно, записанные результаты будут доступны для чтения и вывода на страницы сайта. Как-то так.
Присоединяюсь ко всем, кто благодарил Андрея за курс. Тестирование действительео не простая задача. Ждем продолжения тестов.
А относительно заливки на WP, вы сказали про плагины — это что-то типа testme? и как тогда в него внедрить готовый функционал?
Спасибо
Да, что-то вроде testme. Готовый функционал туда внедрять не нужно, это уже готовое решение, которое можно использовать, если подходит его функционал. Если не подходит, тогда либо искать плагин, который подойдет, либо же писать собственный.
Андрей, вариант с testme мною был рассмотрен ранее, есть еще похожие плагины, но их функционал ограничен. Вы в своих уроках показали (ну мне так точно) возможности php. Учусь. постигаю. НО, совет все же по интеграции — если WP/Joomla или просто на HTML страницу и т.д. — это не принципиально, то куда лучше всего этот функционал внедрить?
А по поводу собственного плагина на WP — стоит ли овчинка выделки (по времени, трудозатратам) и обращаясь к урокам по WP — я не нашел (пока) на сайте урока по созданию плагина или не там искал. Если есть — отправте меня по ссылочке
Спасибо!
А вот у нас естьбесплатная серия уроков по созданию собственного плагина для WordPress. А здесь целый курс на эту тему.
«Уж послала так послала» ) Спасибо, как раз в точку!
Андрей, большое спасибо за замечательные уроки!
Скажите, пожалуйста, планируется ли продолжение по созданию «админки» для тестов. Если да, то когда примерно оно выйдет.
Данный вопрос очень актуален.
К сожалению, на продолжение пока не хватает времени. Возможно руки дойдут, но конкретных сроков не подскажу.
Спасибо за уроки, хотелось бы дальше продолжить тему.
Доброго времени суток! Благодарю за ваш курс, Андрей!
Теперь подскажите пожалуйста, как сделать так, чтобы после перехода по ссылке сразу загружались вопросы определенного теста?
Планируется один файл с перечнем названий тестов, щёлкая по названию требуется переход на другой файл, где сразу же будут выведены вопросы только одного теста с помощью пагинации, как в вашем примере. Чтобы доступ к другим тестам с данной страницы был не возможен.
Заранее спасибо!
Здравствуйте.
Создайте новый файл и сделайте ссылку теста на него, а не на текущий файл, т.е. вместо такой ссылки:
?test=< ?=$test['id']
будет примерно такая:
test.php?test=< ?=$test['id']
Ну а в новом файле test.php уже получайте вопросы и делайте все с ними связанное, что делалось ранее в одном файле index.php
Спасибо огромное за уроки, хотелось бы дальше продолжить тему.
Здраствуйте! Я раньше подписался на ваши премиум уроки только на 1 месяц, скачал исходники. Сейчас у меня задача подключить на сайт WordPress, подробнее можете рассказать, где файлы должно находится, как внедрить таблицу в базу данных и т.д
Здравствуйте. Для WordPress я бы рекомендовал Вам найти плагин для организации тестирования. Если все же хотите использовать данный скрипт, тогда нужно писать собственный плагин. Соответственно, файлы должны находиться в папке плагина. Таблицы достаточно импортировать в ту же БД, где находятся таблицы WP. Это общие рекомендации. Что-то более конкретное уже выходит за рамки комментария — здесь уже потребуется несколько полноценных уроков.
Спасибо! Но я почти сделал ручным способом, только выводится ошибка Fatal error: Cannot re-assign auto-global variable _POST in, как исправить ошибку. Если убрать $_POST в функции, выводится вопросы тестов, но не работает вывод результатов тестирование. Когда нажимаешь на кнопку закончить тест выводится такая ошибка Error!
Начиная с PHP 5.4 использовать глобальные переменные в параметрах функции нельзя. Поэтому ошибка исправляется удалением $_POST из параметров при объявлении функции и при ее вызове.
Спасибо большое, теперь все работает, изменил на хостинге версию PHP на 5.3 версии.
Пожалуйста)
Андрей, здравствуйте! Скажите пожалуйста, как сделать так, чтоб в вопросе выводились из БД картинка? Очень нужно, помогите пожалуйста
Здравствуйте.
В таблицу добавьте еще одно поле, в котором будет храниться путь к картинке. Сами картинки храните в отдельной папке. При получении вопросов также получайте и путь к картинке. Полученный путь просто подставляйте в тег img и картинка будет выводиться. Все просто)
добрый день! у меня показывает Нет тестов, я ничего не изменил просто скачал source code и все!
Здравствуйте. Скорее всего, Вы не проходили курс, а сразу скачали и установили исходники. В процессе курса менялась БД, в частности, в таблицу test с тестами было добавлено поле enable, которое позволяет включить или отключить тест. Добавьте это поле, установите для тестов значение 1 (включено) или 0 (выключено) и включенные тесты будут показаны.
А вообще, рекомендую пройти уроки с самого начала и последовательно. Это все же учебный курс, а не готовый продукт, который скачал и можно использовать как есть.
Спасибо за урок. Когда будет продолжение???
Пожалуйста. Эта серия уроков уже завершена.
Отличный курс!!! С нетерпением буду ждать выхода продолжения по админской части.
1. А как можно сделать вывод вопросов не с помощью пагинации (через табы), а просто кнопкой продолжить?
2. Как можно сделать вывод вопросов и ответов к ним в перемешку, а не так как они расположены в базе данных?
Продолжение курса вряд ли будет. По вопросам:
1. Вместо номеров страниц выводим стрелки вперед/назад по условию. В пагинации таким условием для кнопки вперед является сравнение текущей страницы пагинации с общим количеством страниц. Если текущая страница меньше общего кол-ва, тогда нужна стрелка вперед. Для кнопки назад условием будет сравнение текущей страницы с единицей. Если текущая страница больше 1, тогда нужна стрелка назад. Это стандартный алгоритм формирования кнопок пагинации, который можно взять за основу.
2. Как вариант, при выборке из БД добавить в запрос перемешивание с помощью ORDER BY RAND().
1. А как можно сделать вывод вопросов не с помощью пагинации (через табы), а просто кнопкой продолжить?
Подразумевалось немного другое =) Чтобы по нажатию на кнопку продолжить из базы данных подгружался очередной вопрос
В этом случае нужно полностью менять логику. В текущей реализации получаются все вопросы, в Вашем случае нужно будет получать только часть вопросов, для одной страницы. Ну а далее, при клике по кнопке продолжить, отправляется ajax-запрос, который получит следующую порцию вопросов.
А не подскажите какой примерно запрос составить чтобы выполнить подобный функционал?
Сходу не подскажу, нужно возвращаться к теме — думать и пробовать. Теоретически можно взять за основу текущий запрос и добавить к нему LIMIT, ограничивая выборку вопросов для конкретной страницы. Возможно, если не получится, будет проще выполнить два отдельных запроса, один будет получать вопрос, а второй запрос — варианты ответов к нему. В общем, нужно пробовать. Вы попробуйте, а если все же не будет получаться, тогда в соответствующейветке для клиентов форума покажите свои наработки, возможно что-то и подскажу.
реализую админскую часть создал форму где есть поля добавьте вопрос, ответ(добавляю с помощью jquery append to ) пишу два запроса которые добавляет вопрос в таблицу Question а второй в таблицу Answer вопрос такой в таблице ANSWER есть поле id_question как мне добавить в это поле id_question из таблицы Question, БД использую ОРАКЛ
Получить вставленный ID после добавления вопроса. Если используется PDO, тогда поможет функцияlastInsertId . Если используется другое расширение, тогда смотрите документацию по работе с ним. Повторюсь, с Oracle я не работал, поэтому нюансов не подскажу.
Здравствуйте! Огромное спасибо за прекрасные уроки. Благодаря вам я учусь программировать на языке «PHP». Мы с нетерпением ждем продолжения курса!!
Здравствуйте! Огромное спасибо за прекрасные уроки. Буду ждать админку
Здравствуйте Андрей! у меня вопрос как весь этот код переписать в стиле MVC ?
Здравствуйте.Каталог товаров можно посмотреть 12 урок, в котором приложение переписывается согласно паттерну MVC.
Отделив компоненты модель-вид-контроллер. В курсе
Здравствуйте как перенести код БД ОРАКЛ, что надо мне поменять ах да в концепции MVC надо переписать, поджскажите ?
Здравствуйте.
Не совсем понял, как соотносится СУБД и паттерн MVC? В СУБД нет кода — есть данные, поэтому также не понял, какой код Вы хотите переносить.
я имел ввиду допустим mysqli_query такие на подобие функции не будут жк работать в БД ОРАКЛ, если буду делать операции с БД
Скорее всего нет, с Oracle не работал. ИспользуйтеPDO или соответствующее расширение .
Здравствуйте Андрей! Извините ,я хотел бы поинтересоваться когда вы будете опубликовывать администраторскую часть?
Здравствуйте. Админская часть в данном курсе не планируется.
Здравствуйте, как исправить данную ошибку?
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in
Выводит ошибку и пишет нет тестов
Здравствуйте.
Проверить переменную, которая подается на вход функции mysqli_fetch_assoc. В тексте ошибки об этом как раз пишут: функция ожидает параметром результат запроса, а получает булев тип, скорее всего получает false. Проверяйте sql-запрос, очевидно проблема в нем.
Спасибо, разобрался. Осталась проблема в том, что пагинация не работает
Пожалуйста
Андрей, не подскажете, как сделать разделение по билетам? В базе будет 600 вопросов и сразу все выводить не нужно. Как реализовать 30 билетов по 20 вопросов? Либо можно рандомные 20 вопросов из базы доставать.
Принцип тот же, что и для соотнесения вопроса с конкретным тестом. В таблице вопросов для этого используется специальная колонка parent_test, в которой записывается ID теста. Таким же образом можно создать еще одну колонку, в которой хранить значение группы (для этого даже не обязательно создавать отдельную таблицу): блок 1, блок 2… А затем просто выводим вопросы конкретного теста и дополняем условие WHERE примерно так: AND block = ‘здесь нужное значение блока’. Как-то так можно пробовать.
Андрей, если дополнить условие AND block, то пользователь не сможет сам выбирать, какую группу вопросов ему выбрать. Подскажите пожалуйста, как реализовать разделение по билетам вопросы, в базе слишком много вопросов.
Почему не сможет? Если вывести названия групп (билетов) в таком варианте: билет 1, билет 2…, то пользователь выбирает нужный билет и затем по номеру билета выбираются его вопросы. Как-то так мне видится. В коде, конечно, придется дописывать, ограничиться только незначительным дополнением sql-запроса здесь не получится.
Добрый день. Подскажите, пожалуйста, можно ли сделать так, чтобы при пагинации следующим вопросом был тот, который зависит от правильности предыдущего? (адаптивное тестирование)
Здравствуйте. Можно, конечно же. Но текущий вариант скрипта для этого не подходит, его придется существенно дорабатывать.
Спасибо. Возможно, вы могли бы посоветовать какие-нибудь видео-курсы, которые помогли бы в разработке адаптивной системы тестирования?
У нас конкретно по теме создания тестов ничего нет. Но можно изучить в целом PHP и создать нужный скрипт самостоятельно