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

Я делаю приложение для викторины, и один вопрос должен быть правильным. Я уже могу вставить несколько данных в свою таблицу, проблема в том, что у меня есть один определенный c выбор или ответ, который должен отличаться от других.

Снимок экрана приложения и что я пытаюсь сделать

enter image description here

Вот как выглядит моя таблица

table answers

id | answer | correct
 1 |  Apple |     1
 2 |  Mango |     0
 3 |  Melon |     0

1 указывает на правильный ответ, а 0 указывает на неправильный.

Итак, вот моя модель.

Я попытался извлечь значение переключателя, которое является значением 1 , и вставить его в базу данных, но в результате получилось: ЕСЛИ я добавить другие данные или несколько данных. Индекс 0 или первые данные были единственными данными, которые можно вставить. Я НЕ МОГУТ выбрать, какую радио-кнопку я могу проверить только ПЕРВАЯ кнопка Я могу проверить.

// Insert questions

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

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

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


    $value = array();

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


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

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

Проблема моей таблицы, если я добавлю 3 новых data

id | answer | correct
 1 |  Apple |     1
 2 |  Mango |     0
 3 |  Melon |     0
* New 3 Data Inserted 
 4 | Orange |     1
 5 | Tomato |     0
 6 | Grapes |     0

Я не могу сделать Tomato или Grapes моим ответом или сделать его только значением 1 только для Orange или для первых добавленных данных.

ПРОСМОТР

Так вот мой переключатель

<div class="form-check">
 <input class="form-check-input" type="radio" name="checkChoice[]" id="checkChoice" value="1" checked  />
    <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" checked  />
                                                    <label class="form-check-label" for="exampleRadios1">
                                                        Make this as an Answer
                                                    </label>
                                            </div>
                                        </td>
                                    </tr>  

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

                    <hr>

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

</form>

Сценарий

<script>

    $('#btnSave').click(function(){
            var url = $('#myForm').attr('action');
            var data = $('#myForm').serialize();
            //validate form

                $.ajax({
                    type: 'ajax',
                    method: 'post',
                    url: url,
                    data: data,
                    async: false,
                    dataType: 'json',
                    success: function(response){
                        if(response.success){
                            $('#myForm')[0].reset();
                            if(response.type=='add'){
                                var type = 'added'
                            }
                            swal("Success!", "You created a Question!", "success");

                        }else{
                            alert('Error');
                        }
                    },
                    error: function(){
                        alert('Could not add data');
                    }
                });
        });


</script>

Dynami c Полевой сценарий

<script>  
 $(document).ready(function(){  
      var i=1;  
      $('#add').click(function(){  
           i++;  
           $('#dynamic_field').append(
               '<tr id="row'+i+'">'+
                 '<td><input type="hidden" name="choiceHid[]" value="0" /></td>'+
                 '<td><input type="text" name="choice[]" placeholder="Enter your Choice" class="form-control" /></td>'+
                 '<td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove"><span class="iconify" data-icon="dashicons:remove" data-inline="false"></span></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>'
               );  

      });  

      $(document).on('click', '.btn_remove', function(){  
           var button_id = $(this).attr("id");   
           $('#row'+button_id+'').remove();  
      });  

 });  
 </script>

1 Ответ

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

Dynami c Сценарий поля

сделать переменную val как значение checkChoice, как показано ниже ...

  <script>  
     $(document).ready(function(){  
          var i=1;  
          $('#add').click(function(){  
               var val =i;
               i++;  
               $('#dynamic_field').append(
                   '<tr id="row'+i+'">'+
                     '<td><input type="hidden" name="choiceHid[]" value="0" /></td>'+
                     '<td><input type="text" name="choice[]" placeholder="Enter your Choice" class="form-control" /></td>'+
                     '<td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove"><span class="iconify" data-icon="dashicons:remove" data-inline="false"></span></button></td>'+
                     '<td>'+
                            '<div class="form-check">'+
                                '<input class="form-check-input" type="radio" name="checkChoice" id="checkChoice" value="'+val+'" />'+
                                        '<label class="form-check-label" for="exampleRadios1">'+
                                            'Make this as an Answer'+
                                        '</label>'+
                            '</div>'+
                     '</td>'+
                   '</tr>'
                   );  

          });  

          $(document).on('click', '.btn_remove', function(){  
               var button_id = $(this).attr("id");   
               $('#row'+button_id+'').remove();  
          });  

     });  
     </script>

View

присвоить начальное значение checkChoice как 0, как показано ниже

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

// Вставить ответы

$data_answer = $this->input->post('choice[]');
$data_is_correct = $this->input->post('checkChoice');


$value = array();

for($i = 0; $i < count($data_answer); $i++) {

          if($data_is_correct == $i) {
            $correct = 1;
          } else {
            $correct = 0;
          }
    $value[$i] = array(
        'answer' => $data_answer[$i],
        'correct' => $correct,
        'question_id' => $this->db->insert_id(),
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...