This gist might help https://gist.github.com/jimgwhit/3c1026871ca4246d6ae9f71012ba8e4d
Aug 25, 2020
5
Level 5
insert from input text Field Array with checkbox
i try to insert this form into db
<div>
<input class="form-check-input" name="correctanswer" type="radio" value="0">
<textarea name="answer[]" required></textarea>
</div>
<div>
<input class="form-check-input" name="correctanswer" type="radio" value="0">
<textarea name="answer[]" required></textarea>
</div>
eloquent
$units = [];
foreach ($request->answer as $key => $answer) {
$units[] = [
'question_id' => $question->id,
'answer' => $request->answer[$key],
'correct_answer' => $request->correctanswer[$key],
];
}
if (! empty($units)) {
DB::table('answers')->insert($units);
return redirect('/admin/question')->with('success','تم إضافة السؤال بنجاح');
}
radio button checked must insert value 1, not checked insert zero. using jquery i changed radio button selected to 1;
but in Eloquent i got this error ErrorException Uninitialized string offset: 1
plz any help to insert (answers and correct answer insert value to 1)
Level 5
This is my final code its works fine.
but I'm not sure if its good or need improve
public function store(Request $request)
{
$question = new Question();
$question->question=$request->input('question');
$question->course_id=$request->input('course');
$question->active=$request->input('active');
$question->admin_id=Auth::user()->id;
$question->save();
$units = [];
for ($i=0;$i<count($request->answer);$i++){
$units[] = [
'question_id' => $question->id,
'answer' => $request->answer[$i],
];
}
if (! empty($units)) {
for($i=0;$i<count($units);$i++){
$lastId= DB::table('answers')->insertGetId($units[$i]);
}
$correct_answer = $lastId-count($units)+$request->correctanswer;
$question->correct_answer=$correct_answer;
$question->save();
return redirect('/admin/question')->with('success','تم إضافة السؤال بنجاح');
}
}
in html
<div>
<input class="form-check-input" name="correctanswer" type="radio" value="1">
<textarea name="answer[]" required></textarea>
</div>
<div>
<input class="form-check-input" name="correctanswer" type="radio" value="2">
<textarea name="answer[]" required></textarea>
</div>
1- insert question.
2- insert answers and questionid.
3- calculate which answer is the correct answer
4-update question table to take best answer id
Please or to participate in this conversation.