Урок 1. Выводим варианты тестов

Дата публикации: 08-09-2014

создание системы тестирования

От автора: В цикле из нескольких уроков мы с вами будем создавать несложную, но вместе с тем функциональную систему тестирования, которая должна в первую очередь выполнять свою прямую задачу – оценка прохождения теста тестируемым.


скачать урок скачать исходники

Все уроки курса:

Метки: , ,

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

  1. Андрей

    Здравствуйте. Прошу вас. Умоляю. Отправьте мне админ панель с регистрацией и возможностью комментировать тесты

    • Андрей Кудлай

      Здравствуйте, Андрей. Уроков по созданию админки нет, соответственно, нет и самой админки, поэтому отправлять просто нечего.

  2. Руслан

    Доброго дня!
    Вопрос по уроку при выводе массива (20 мин.)
    Ругается на 17 строку кода
    «Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in J:\home\localhost\www\testing\functions.php on line 17″
    сама строка в коде прописана вот так: $res = mysqli_query($db, $query);
    где ошибка не могу понять.
    Подскажите пожалуйста.

    • Андрей Кудлай

      Здравствуйте, Руслан. Отвечу здесь в качестве исключения, в дальнейшем все вопросы по урокам этого курса можно задать в специальной теме на форуме. Если у Вас нет доступа в указанный раздел форума, тогда напишите в нашу службу поддержки, указав логин на форуме, и доступ будет открыт.
      Теперь по ошибке. Ошибка сообщает, что в качестве параметра функции mysqli_query передается не то, что она ожидает. Скорее всего, проблема с идентификатором соединения $db, т.е. в этой переменной, скорее всего, не идентификатор соединения. Если не разберетесь сами с ошибкой, тогда задайте вопрос в указанном разделе на форуме и выложите в архиве весь код проекта, я посмотрю.

  3. Pavel

    А что бы Вы могли порекомендовать по созданию древовидной системы тестирования. Те такой системы где вопросы подбираются в зависимости от ответов на предыдущий. Происхрдит как бы прохрд по ветке дерева. Для меня очень важна данная тема, буду очень благодарен Вам, если поможете. Заранее спасибо

    • Андрей Кудлай

      В этом случае каждый следующий вопрос должен выбираться отдельно из БД, в зависимости от ответа на предыдущий. В БД, соответственно, должна быть предусмотрена связь таких вопросов. Что-то вроде поля related_answer, значение которого будет ссылаться на ID предыдущего вопрос. Например, если пользователь выбрал ответ с ID 2, тогда выбираем вопрос с ID 2. Примерно так мне видится решение в теории.

  4. librus

    Андрей, скажите пожалуйста, из практики — какого размера можно делать ветку в БД questions и answers? Я имею ввиду, стоит ли заморачиваться с созданием questions2/answers2 и т.д., если в базе предусматривается 20 тестов. Или можно все вопросы/ответы заливать в одну(ну т.е. две) ветку questions/answers. Это будет порядка !600 вопросов и !3000 ответов. примерно. Заранее спасибо, думаю это многим будет интересно узнать.

  5. timisharin@gmail.com

    Скажите а как сделать что бы он сохранял данные пользователя с общим счетом?

    • Андрей Кудлай

      Для начала создать как минимум 2 таблицы: таблица пользователей и таблица результатов. Соответственно, добавить возможность авторизации пользователей, чтобы знать, кто проходит тестирование и для кого сохранять результаты. Ну и на последнем этапе не только выводить данные, но и записывать их в созданную таблицу.

  6. Андрей Власов

    Андрей, добрый день! Не нашел обсуждения этой темы на форуме, поэтому пишу здесь. Не могли бы Вы подробно объяснить (лучше в личной переписке) работу строки <a href="?test=»> из первого урока. А именно: как в качестве ссылки используется элемент массива?

    • Андрей Кудлай

      Здравствуйте, Андрей. Если темы на форуме нет, тогда Вы можете создать ее сами и задать вопрос, логично? :) По Вашему вопросу здесь. Через вопросительный знак на сервер можно передать GET параметры. В данном случае передается параметр test и на сервере он будет доступен в массиве $_GET['test']. Как-то так. Если интересует какой-то другой аспект, тогда на форуме задайте вопрос как можно конкретнее, и я постараюсь ответить.

  7. Username

    Подскажите пожалуйста как сохранять данные в результатов тестирования в таблицу. Я добавил две таблицы users и result, сделал авторизацию через сессии, в последней функции, где происходит вывод результатов написал
    if (!empty($_SESSION['login'])) {
    global $db;
    $query = «INSERT INTO result (parent_user,parent_test,mark) VALUES (‘».$_SESSION['fio'].»‘,’$test’,'$percent’)»;
    $res = mysqli_query($db, $query);
    }
    но ничего не происходит. На форуме ни кто не отвечает, поэтому решил здесь спросить

    • Андрей

      Записываются данные в БД с помощью запроса INSERT, как Вы и делаете. Если данные не сохраняются, значит есть проблема с логикой или в запросе. Здесь поможет только отладка кода. Начните с проверки, попадаете ли Вы в условие и доходит ли дело до запроса. Для этого достаточно распечатать запрос на экран. Если Вы увидите распечатку запроса, значит с логикой кода все в порядке, в этом случае проверьте корректность запроса — в нем должны быть верно перечислены поля и должны быть все соответствующие значения. Сам распечатанный запрос можно даже скопировать и выполнить в phpMyAdmin, чтобы убедиться в том, что он (не)работает. Как-то так.

      • Username

        В общем проблема как я понял была в запросе, я немного исправил его и добавил or die(mysqli_error($db)), теперь выводит
        INSERT INTO testing.result (result_id, parent_user, parent_test, mark) VALUES (NULL, ‘Ivanov Ivan Ivanovich’, ’1′, ’66.67′)
        Cannot add or update a child row: a foreign key constraint fails (testing.result, CONSTRAINT result_ibfk_2 FOREIGN KEY (parent_test) REFERENCES test (test_name))
        Простите что здесь спрашиваю

        • Андрей

          У Вас используется внешний ключ для связи таблиц, который накладывает какие-то ограничения. Либо уберите внешний ключ, либо согласуйте данные, чтобы они соответствовали имеющимся ограничениям. Это все, что могу пока подсказать. Судя по всему, проблема с полем parent_test, в которое Вы пытаетесь записать цифру 1, но которое ссылается на поле test.test_name, где, очевидно, но ID теста, а его номер. Хотя могу и ошибаться.

          • Andreka65

            Андрей, помогите. Не работает html код, php выполняется, а html нет, если меняю название файла на index.html, то html работает, а php нет. В чем причина, помогите

          • Андрей

            Для того, чтобы исполнялся код PHP — расширение файла должно быть .php, не .html. Ну и, конечно же, на сервере должен быть установлен интерпретатор PHP. Если эти условия выполняются, тогда код PHP должен исполняться. Поэтому проверяйте эти моменты.

Добавить комментарий