Есть ли способ обновить и вставить выбранные входы в базу данных? Codeigniter - PullRequest
0 голосов
/ 11 марта 2020

Я успешно вставил несколько значений, и теперь ПРОБЛЕМА предназначена для запроса, как я могу обновить одновременно , чтобы обновить correct_id до 1 - Как я могу обновить выбранный вход, используя переключатель в качестве контрольного значения. Вот мой пользовательский интерфейс, о том, как он был спроектирован.

У меня есть имя поля correct_id, значение которого должно быть 1, чтобы считаться правильным ответом. Пожалуйста, направь меня внимательно, так как это стало для меня проблемой. Недавно я запутался с запросом, спасибо!

enter image description here

Итак, как вы видите, у меня есть переключатели, мне нужно выбрать один вход или Выбор будет моим ответом

Вот моя Модель .

public function addQuestion(){
    // Insert questions

    $field_question = array(
        'question'=>$this->input->post('question'),
    );

    $this->db->insert('questions', $field_question);

    // Insert Answers
    $data_answer = $this->input->post('choice[]');


    $value = array();

    for($i = 0; $i < count($data_answer); $i++) {
        $value[$i] = array(
            'answer' => $data_answer[$i],
            'question_id' => $this->db->insert_id(),
        );
    }


    $this->db->insert_batch('answers', $value);

    if($this->db->affected_rows() > 0){
        return true;
    }else{
        return false;
    }
}

И моя Форма в поле зрения

Здесь я точно покажу радиовход, его название и значение

<div class="form-check">
    <input class="form-check-input" type="radio" name="checkChoice[]" id="checkChoice" value="1">
        <label class="form-check-label" for="exampleRadios1">
            Make this as an Answer
        </label>
</div>

А вот полный вид кода формы.

<form method="post" id="myForm" action="<?php echo base_url(); ?>posts/addQuestion">
                    <div class="input-group">
                        <div class="input-group-prepend">
                            <span class="input-group-text">Question</span>
                        </div>
                        <input type="text" placeholder="Enter your Question" name="question" id="question" class="form-control" required />
                    </div>

                    <hr>
                    <h5>Create Choices: </h5>
                    <div class="input-group input-group-sm mb-3">
                    <div class="table-responsive">  
                               <table class="table table-bordered" id="dynamic_field">  
                                    <tr>  

                                         <td><input type="hidden" name="choiceHid[]" value="0" /></td> 
                                         <td><input type="text" name="choice[]" id="choice" placeholder="Enter your Choice" class="form-control" /> </td>  
                                         <td><button type="button" name="add" id="add" class="btn btn-success"><span class="iconify" data-icon="ant-design:plus-circle-outlined" data-inline="false"></span> Add Response </button></td>  
                                         <td>
                                            <div class="form-check">
                                                <input class="form-check-input" type="radio" name="checkChoice[]" id="checkChoice" value="1">
                                                    <label class="form-check-label" for="exampleRadios1">
                                                        Make this as an Answer
                                                    </label>
                                            </div>
                                        </td>
                                    </tr>  

                               </table>  
                          </div>  
                    </div>

                    <hr>
                    <div class="col-md-8">
                            <h5> Your Answer: 
                            <input type="hidden" name="txtAnswer" value="0" />
                            <input type="text" placeholder="Enter the Question's Answer" name="answer_choice" id="answer_choice" class="form-control mt-2" /><h5>
                    </div>
                    <hr>

                    <input type="button" id="btnSave" class="btn btn-block btn-info" value="Submit" />

</form>

1 Ответ

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

Во-первых, назначьте разные индексные случайные идентификаторы для каждого радио и текстовых полей ответа (например: выбор [n] и пара checkChoice [n]):

<input type="text" name="choice[13]" id="choice" placeholder="Enter your Choice" class="form-control" /> </td>  
<input class="form-check-input" type="radio" name="checkChoice[13]" id="checkChoice" value="1">

После, используйте foreach и убедитесь, что checkChoice с тем же индексом, который был выбран в l oop:

foreach($data_answer as $index => $value) {
  array_push($value, array(
        'answer' => $value,
        'question_id' => $this->db->insert_id(),
        'correct_id' => ((isset($_POST['checkChoice'][$index])) ? 1 : null)
    ));
}

Поскольку теперь у каждого радио есть другое имя, радио ведет себя как флажок (позволяет выбрать более одного). Таким образом, вы должны снова запустить радиоуправление с помощью фрагмента jquery:

$( document ).ready(function() {
  $('input[type=radio]').change(function() {
     // When any radio button on the page is selected,
     // then deselect all other radio buttons.
     $('input[type=radio]:checked').not(this).prop('checked', false);
 });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...