У меня есть случай, чтобы закодировать модуль викторины, который мне нужен, чтобы просмотреть его вопрос только для 40 вопросов. Сразу после викторины я должен сделать if ..else
условие, чтобы решить, какой ответ является верным или нет. Потому что, если это правда, я буду давать баллы за каждый правильный ответ. Но это просто не может сделать его в хорошем состоянии. Он может фильтровать неправильные ответы, но не истинные ответы.
Я использую фреймворк Yii, и я думаю, что это ничего общего со сценарием Yii. Я думаю, что предел запросов усложняет задачу. Может кто-нибудь помочь, пожалуйста? Я должен был завершить это для моего окончательного проекта.
Вот мое отношение к базе данных:
«soalsoal» — это вопросы, а «jawabanjawaban» — ответы.
Вот мой взгляд на форму викторины
<form method="post">
<?php
$x = 0;
foreach ($soal as $data)
{
echo $data->soal."<br>";
$list = CHtml::listData($data->jawabanjawabans, 'idjawab','jawaban');
echo CHtml::radioButtonList("jawabanku[$x]", '', $list);
$x++;
echo "<br><br><hr>";
}
?>
<div class="form-actions">
<div class="col-lg-3">
<br><br><br><br>
<button type="submit" class="btn btn-primary btn-lg" aria-label="Center">
<span class="glyphicon glyphicon-save" aria-hidden="true"></span>
Selesai
</button>
<br>
</div>
</div>
</form>
И вот моя страница викторины:
<div class="alert alert-dismissable alert-info">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Penting!</strong> Isikan masing-masing kolom jawaban dengan benar. <br>
Jawaban benar akan mendapat poin +4. <br>
Jawaban salah akan mendapatka poin -1. <br>
Jawaban kosong akan mendapatkan poin 0. <br>
Kerjakan dengan baik dan benar. Telitilah dalam membaca soal. Kerjakan <b>hanya soal yang yakin dapat dikerjakan</b>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h1 class="panel-title" >Simulasi</h1>
</div>
<div class="panel-body">
<?php $this->renderPartial('_form', array('soal'=>$soal)); ?>
</div>
</div>
А вот и мой контроллер:
public function actionCreate()
{
$this->layout='//layouts/column_banksoal';
date_default_timezone_set("Asia/Bangkok");
if (isset($_POST['jawabanku']) ) {
$model=new Simulasi;
$jawabanku = $_POST['jawabanku'];
$model->idsiswa=Yii::app()->user->id;
$model->idbidang=Yii::app()->user->idbidang;
$model->date_created = date("Y-m-d H:i:s");
$jwbBenar = Soalsoal::model()->findAll(array(
"select"=>"idjawab",
"order"=>"idsoalsoal ASC"));
$benar = 0; $salah = 0; $kosong = 0; $totalskor=0; $jmlbenar=0; $jmlsalah=0;
$x = 0;
foreach ($jwbBenar as $data) {
if (!empty($jawabanku[$x])) {
if ($data == $jawabanku[$x]) {
$benar++;
} else if ($jawabanku[$x] == null) {
$kosong++;
}
$x++;
}
}
$salah = 40-($benar+$kosong);
$jmlbenar = (4*$benar);
$jmlsalah = ((-1)*$salah);
$totalskor = $jmlbenar + $jmlsalah;
var_dump($kosong,$totalskor,$jmlbenar,$jmlsalah);
$model->nilai=$totalskor;
$model->jml_benar=$benar;
$model->jml_salah=$salah;
$model->jml_kosong=$kosong;
if($model->save())
{
$id=Yii::app()->user->id;
$sql="SELECT * FROM simulasi WHERE idsiswa='$id' ORDER BY idsimulasi ASC";
$dataProvider=new CSqlDataProvider($sql,array(
'keyField' => 'idsimulasi',
));
$this->render('hasil', array(
'model'=>$model,
'benar'=>$benar,
'kosong'=>$kosong,
'salah'=>$salah,
'totalskor'=>$totalskor,
'grafikskor'=>$dataProvider,));
}} else {
$idbidang=Yii::app()->user->idbidang;
$soal = Soalsoal::model()->findAll(array(
"select"=>"idsoalsoal,soal,idbidang,gambar,kunci,idjawab",
"condition"=>"idbidang=$idbidang",
"order"=>"rand() LIMIT 40"));
$this->render('create', array('soal'=>$soal));
}
}
Задача ещё не решена.
Других решений пока нет …