Scrables данные радио кнопки - PullRequest
1 голос
/ 23 марта 2019

У меня небольшая проблема с рандомизацией данных. В настоящее время я делаю систему онлайн-экзаменов, где последовательность вопросов будет случайной, а порядок ответов - случайным. Но теперь я могу только рандомизировать вопрос только с помощью запроса Sql, используя «порядок по случайности». но для выбора ответов я все еще не могу рандомизировать его, есть ли что-нибудь, что может мне помочь?

это мои результаты enter image description here

        my script

$html .= $d->soal.'<br>'.$tampil_media.'<div class="funkyradio">';

                        for ($j = 0; $j < $this->config->item('jml_opsi'); $j++) {
                            $opsi = "opsi_".$this->opsi[$j];
                            $checked = $arr_jawab[$d->id]["j"] == strtoupper($this->opsi[$j]) ? "checked" : "";
                            $pc_pilihan_opsi = explode("#####", $d->$opsi);

                            $tampil_media_opsi = (is_file('./upload/gambar_soal/'.$pc_pilihan_opsi[0]) || $pc_pilihan_opsi[0] != "") ? tampil_media('./upload/gambar_opsi/'.$pc_pilihan_opsi[0],'auto','auto') : '';

                            $pilihan_opsi = empty($pc_pilihan_opsi[1]) ? "-" : $pc_pilihan_opsi[1];

                            $html .= 
                            '<div class="funkyradio-success" onclick="return simpan_sementara();">
                            <fieldset class="radio">
                            <span class="text-primary">'.$this->opsi[$j].'.</span>
                            <input type="radio" id="opsi_'.strtoupper($this->opsi[$j]).'_'.$d->id.'" name="opsi_'.$no.'" value="'.strtoupper($this->opsi[$j]).'" '.$checked.'> 
                            <label for="opsi_'.strtoupper($this->opsi[$j]).'_'.$d->id.'">'.$pilihan_opsi.$tampil_media_opsi.'</label> 
                            </fieldset>
                            </div>';
                        }
                        $html .= '</div></div>';
                        $no++;

таблица sql enter image description here

1 Ответ

1 голос
/ 23 марта 2019

Поскольку ответы кажутся численно проиндексированными, их можно рандомизировать, создав массив значений индекса и перетасовав их, а затем зацикливая эти значения.Поэтому замените эту for инструкцию:

for ($j = 0; $j < $this->config->item('jml_opsi'); $j++) {

на:

$indexes = range(0, $this->config->item('jml_opsi') - 1);
shuffle($indexes);
foreach ($indexes as $j) {

Вот демонстрация результата кода тасования на 3v4l.org.

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