Измените массив множественных переключателей stati c на Dynami c Codeigniter - PullRequest
0 голосов
/ 08 марта 2020

Как мне поменять несколько переключателей на динамические c?

, вот мои переключатели и их значение на Просмотр

A. <input type="radio" name="quizId<?= $question->id ?>" value="<?= $ans_array[0] ?>" required /> <?= $ans_array[0] ?> <br>
B. <input type="radio" name="quizId<?= $question->id ?>" value="<?= $ans_array[1] ?>" /> <?= $ans_array[1] ?> <br>
C. <input type="radio" name="quizId<?= $question->id ?>" value="<?= $ans_array[2] ?>" /> <?= $ans_array[2] ?> <br>
D. <input type="radio" name="quizId<?= $question->id ?>" value="<?= $ans_array[3] ?>" /> <?= $ans_array[3] ?> <br>

и здесь мой контроллер Как я могу получить их динамически? без вызова каждого элемента

public function resultDisplay(){
    $this->data['checks'] = array(
        'ques1' => $this->input->post('quizId1'),
        'ques2' => $this->input->post('quizId2'),
        'ques3' => $this->input->post('quizId3'),
        'ques4' => $this->input->post('quizId4'),
        'ques5' => $this->input->post('quizId5')
    );
    $this->load->model('quiz_model');
    $this->data['results'] = $this->quiz_model->getQuestions();
    $this->load->view('templates/header');
    $this->load->view('activity/result_display', $this->data);
    $this->load->view('templates/footer');
}

Это выдает ошибку

После изменения моего контроллера на

$this->data['checks'] = array(
        'ques' => $this->input->post('quizId');
);

<?php 
        for($x=0; $x < 5; $x++) {
    ?>

<form method="post" action="<?php echo base_url(); ?>Pages/index" >


    <p><?= $array3[$x] ?>.<?= $array4[$x] ?></p>

    <?php if($array2[$x] != $array1[$x]) {?>

          <p><span class="badge" style="background-color: #FF9C9E"><?=$array1[$x]?></span></p>
          <p><span class="badge" style="background-color: #ADFFB4"><?=$array2[$x]?></span></p>

    <?php } else { ?>

        <p><span class="badge" style="background-color: #ADFFB4"><?=$array1[$x]?></span></p>

        <?php $score = $score + 1; ?>

    <?php 
        }
    }
    ?>
    <hr>

    <h5>Your score: </h5>
            <h3><?= $score ?>/5</h3>
    <input type="submit" class="btn btn-info btn-md" value="Back" />

</form>

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Использование массива будет более эффективным. Вы можете сделать это следующим образом:

<input type="radio" name="quizId[<?= $question->id ?>]" value="<?= $array_value ?>" required /> <?= $array_value ?> <br />

Так что после post вы можете go по всему l oop и получить результаты своего поста, такие как:

foreach($this->input->post('quizId') as $val){
    //work with each value here
} 

Как я вижу Вы можете обновить контроллер следующим образом:

$this->data['checks'] = $this->input->post('quizId');

Вы отправили весь массив на view. Теперь в файле view необходимо указать значение ключа, подобное quizId . $key.

0 голосов
/ 08 марта 2020
<?php $i = 1;
  foreach($ans_array AS $array_value): 
?>
<?= $i; ?>.&nbsp; <input type="radio" name="quizId<?= $question->id ?>" value="<?= $array_value ?>" required /> <?= $array_value ?> <br>

<?php 
$i++; 
endforeach; 
?>

Надеюсь, это поможет.

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