2017-05-29 85 views
2

我有一個測驗在線的項目,我想答案是這樣保存在數據庫將數據庫中的多個數據codeigniter的無線電值插入一行?

+-----------+-------------+---------+-------------+ 
| id_answer | id_student | id_kuis | answer | 
+-----------+-------------+---------+-------------+ 
|   1 | 99999874465 |  7 | A,B,D,A,C,B | 
+-----------+-------------+---------+-------------+ 

這個測驗是選擇題。那麼我怎樣才能插入這樣的答案數據。

這是我的看法

<?php echo form_open('c_kuis/addKuisAnswer',$atribut); ?> 
         <?php foreach($soalPG as $row){?> 
         <?php $jawab_array = array($row->pil_a,$row->pil_b,$row->pil_c,$row->pil_d);?> 
         <p><?=$row->no_soal?>.<?=$row->soal?></p> 
         <input type="hidden"name="id_soal<?=$row->id_soal_pg?>" value="<?=$row->id_soal_pg?>"></input> 
         <input type="radio" name="jawaban<?=$row->no_soal?>" value="A"> A. <?=$jawab_array[0]?></input><br> 
         <input type="radio" name="jawaban<?=$row->no_soal?>" value="B"> B. <?=$jawab_array[1]?></input><br> 
         <input type="radio" name="jawaban<?=$row->no_soal?>" value="C"> C. <?=$jawab_array[2]?></input><br> 
         <input type="radio" name="jawaban<?=$row->no_soal?>" value="D"> D. <?=$jawab_array[3]?></input><br> 
         <br><br> 
        <?php } ?> 
        <input type="hidden" name="kuis_id" value="<?php echo $kuisPG->id_ks;?>"></input> 
        <button class="btn btn-primary submit" id= "submit" type="submit">Submit</button> 
        <?php echo form_close(); ?> 
        </div> 

,這裏是我的控制器

public function addKuisAnswer(){ 
     $kuis_id = $_POST['kuis_id']; 
     $id_user = $this->session->userdata('data_user')->no_id; 
     $i=1; 
     while(isset($_POST['jawaban'.$i])) 
     { 
      $answer = $_POST['jawaban'.$i]; 
     } 
     $this->load->model('m_kuis'); 
     $this->m_kuis->answer_PG($id_user,$kuis_id,$answer); 
     echo " <script> 
         alert('answer saved!'); 
         history.go(-2); 
         </script>"; 

    } 

如何編輯我的控制器輸入數據上面的例子表?

+0

什麼結果'$ answer'? – Shihas

+0

結果是多重選擇的字母表,例如POST jawaban3 $ answer的結果將C例如 – Hikaru18

+0

所以你想只插入'C'你的db? – Shihas

回答

1

我想,這可能幫助你

public function addKuisAnswer(){ 
    $kuis_id = $_POST['kuis_id']; 
    $id_user = $this->session->userdata('data_user')->no_id; 
    $i=1; 
    while(isset($_POST['jawaban'.$i])) 
    { 
     if($i == 1) 
     { 
      $answer = $_POST['jawaban'.$i]; 
      } 
     else{ 
     $answer. =','. $_POST['jawaban'.$i]; 
     } 
     $i++; 
    } 
    $this->load->model('m_kuis'); 
    $this->m_kuis->answer_PG($id_user,$kuis_id,$answer); 
    echo " <script> 
        alert('answer saved!'); 
        history.go(-2); 
        </script>"; 

} 

我們有另一種解決方案,使用explodeimplode

while(isset($_POST['jawaban'.$i])) 
{ 
    $answer_array[] = $_POST['jawaban'.$i]; 

    $i++; 
} 
$answer = implode(',',$answer_array); 
+0

它的工作原理!我已經在第一部分嘗試了你的代碼,它的工作原理!謝謝@ubm – Hikaru18

1

由於您的問題只有一個答案,所以您的無線電對講機的名稱應該與所有4個選項相同,因此用戶只能選擇單個答案,並且您可以輕鬆地在發佈請求中獲取答案。 和其他代碼看起來是正確的。

+0

對不起,但我的單選按鈕名稱是正確的... https://stackoverflow.com/questions/43061074/how-to -insert-radio-button-value-which-have-multiple-radio-name-in-codeignite這是我的問題之前,該問題已解決..現在我有一個問題,插入所有的答案在一行,因爲在那問題我在一行中插入一個答案。 – Hikaru18

+0

什麼是你的列數據類型 –

+0

哪列?爲jawaban $ i。我有varchar類型 – Hikaru18

-1

試試這個代碼:

public function addKuisAnswer(){ 
    $kuis_id = $_POST['kuis_id']; 
    $id_user = $this->session->userdata('data_user')->no_id; 
    $i=1; 
    while(isset($_POST['jawaban'.$i])) 
    { 
     $answer = $_POST['jawaban'.$i]; 
    } 
    $this->load->model('m_kuis'); 

    // add this line to combine all the array values as a string 
    $answer = implode(",",$answer); 

    $this->m_kuis->answer_PG($id_user,$kuis_id,$answer); 
    echo " <script> 
        alert('answer saved!'); 
        history.go(-2); 
        </script>"; 

} 
+0

我跟着這我得到數據庫錯誤,因爲答案是NULL – Hikaru18

+0

你可以'print_r($答案);'並看到插入到數據庫之前的結果? – Shihas

+0

我收到消息:數組到字符串轉換 – Hikaru18

相關問題