Как управлять экзаменационными вопросами из базы данных в laravel? - PullRequest
0 голосов
/ 17 июня 2020

Пожалуйста, я пытаюсь создать платформу для онлайн-экзаменов на PHP / Laravel. У меня есть вопросы и ответы, хранящиеся в базе данных. Мне удалось получить все вопросы и ответы, используя foreach. Как я могу отображать один вопрос / ответ, чтобы учащийся мог решить. Что-то вроде кнопки «Далее» после первого вопроса. Это мой код контроллера:

public function showQuestions($course_code, $course_semester)
{
    $course = Course::find($course_code);

    $courseQuestion = DB::table('courses')
        ->select('*')
        ->join('questions', 'courses.course_code', 'questions.subject_code')
        ->where('course_code','=', $course_code)
        ->where('course_semester','=',$course_semester)
        ->get();

    return view('all-question-page',[
        'display' => $courseQuestion,
        'course' => $course
    ]);
}

в моем файле лезвия, я использовал foreach , который в основном отображает все вопросы и ответы и даже не позволяет мне выбирать ответы для другого вопроса, потому что он имеет то же самое `` имя типа поля````. Я хочу отображать вопрос один за другим или как можно лучше это сделать. Мне нужна помощь

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вы можете получить следующий вопрос, добавив метод к вашей модели, например:

public function next()
{
    return static::where($this->getKeyName(), '>', $this->getKey())->first();
}

Это предполагает, что у вас есть контекст вопроса с конечной точки, такой как ответ Vimona выше. Ваш метод контроллера может выглядеть так:

class QuestionController
{
    ...

    public function show($id)
    {
        // Find the question, assuming the model is Question
        $question = Question::find($id);

        return view('question', [
            'question' => $question
        ]);
    }
}

Ваша следующая кнопка в вашем представлении лезвия:

<a href="{{route('question', ['id' => $question->next()->getKey()])}}">Next</a>

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

0 голосов
/ 17 июня 2020

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

/course/{course_id}/question/{question_id} 

Нажав далее, вы можете сохранить решение учащегося и получить следующий вопрос, открыв курс текущего вопроса , используя текущий идентификатор вопроса. Курс содержит все идентификаторы вопросов, и вы можете рассчитать, какой идентификатор следующий или предыдущий.

Другой способ - использовать JS, чтобы изменить видимость вашего HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...