Search code examples
phpmysqldatabasecodeignitercodeigniter-3

codigniter inserting multiple values to database not working


i have a simple codeigniter form , where there is a checkbox like below:

 <th>  <input class="acb" type="checkbox"  name="generateawb[]" value="<?=$val->id?>" onclick="deRequire('acb')" required /></th>
  <button type="submit" name="savemedaa" style="margin-left:5px; font-size: 0.6em; " class="btn btn-warning">GENERATE AWB</button>

so when the user selects either one or multiple checkboxes, it should insert the selected datas to another table, my controller is like below:

public function generateawb() {
  $data = array();
    if(isset($_POST['savemedaa']))
    {

      $checkboxs = $_POST['generateawb'];
      $generateawb = $this->excel_import_model->selectawb($checkboxs);

foreach($generateawb as $row){
  $clientid= $row->id;
  $batchnumber= $row->batchnumber;

}
$awbg = random_int(100000000, 999999999);
$awb='LRG'.$awbg;

        $data[] = array(
          'clientid'=>$clientid,
          'awb'=>$awb,
           'batchnumber'=>$batchnumber,

        );

      $this->excel_import_model->generateawb($data);

    }
      }
}

and my model is like below:

    public function selectawb($checkboxs) {
                            $this->db->select('*');
                            $this->db->where_in("id", $checkboxs);
                            $this->db->from('fileupload');
                         $query = $this->db->get();
                         $result = $query->result();
                         return $result;

                        }

                        function generateawb($data){
                            $this->db->insert_batch('consignments', $data);
                        }

now the issue is, even if user selects multiple checkboxes only one checkbox is saved to database, can anyone please tell me what is wrong in here, thanks


Solution

  • You are putting $data[] outside the foreach so it has only one value. Just put it inside:

    public function generateawb()
        {
            $data = array();
            if (isset($_POST['savemedaa'])) {
    
                $checkboxs = $_POST['generateawb'];
                $generateawb = $this->excel_import_model->selectawb($checkboxs);
    
                foreach ($generateawb as $row) {
                    $clientid = $row->id;
                    $batchnumber = $row->batchnumber;
                    $awbg = random_int(100000000, 999999999);
                    $awb = 'LRG' . $awbg;
    
                    $data[] = array(
                        'clientid' => $clientid,
                        'awb' => $awb,
                        'batchnumber' => $batchnumber,
    
                    );
                }
    
                $this->excel_import_model->generateawb($data);
            }
        }
    

    You should use a formatter to avoid errors like this. If you use VSCode you can use this extention