如何将数组值转换为字符串并保存到数据库 [英] how to convert array value to string and save to database

查看:36
本文介绍了如何将数组值转换为字符串并保存到数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到麻烦,如何在数据库中保存数组值,每次输入数据时,仅存储数据库中的最后一个数据.这是我的代码:

I have trouble, how to save array value in database, Each time I enter data only the last data stored in the database. here is my code :

控制器:

function tambah_rm($id)
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = 'Tambah Detail Rekam Medis';

    $this->form_validation->set_rules('tgl_berobat', 'tgl_berobat', 'required');
    $this->form_validation->set_rules('anamnesa', 'anamnesa', 'required');
    $this->form_validation->set_rules('diagnosa', 'diagnosa', 'required');
    $this->form_validation->set_rules('therapi', 'therapi', 'required');
    $this->form_validation->set_rules('keterangan', 'keterangan', 'required');

    if ($this->form_validation->run() === FALSE)
    {
        $data['obat']=$this->m_pasien->get_obat();
        $data['header']=$this->m_pasien->header_pasien($id)->row_array();
        $this->template->load('template','v_tambahRM',$data);

    }
    else
    {
        $this->m_pasien->tambahrm($data);
        redirect('pasien');
    }
}

我的模特:

function tambahrm() 
{
    $this->load->helper('url');
    $username = trim($this->session->userdata('id_user'));
    $data = array(
        'tgl_berobat' => $this->input->post('tgl_berobat'),
        'anamnesa' => $this->input->post('anamnesa'),
        'diagnosa' => $this->input->post('diagnosa'),
        'therapi' => $this->input->post('therapi'),
        'keterangan' => $this->input->post('keterangan'),
        'id_user' => $username,
        'id_pasien' => $this->input->post('id_pasien'),
    );

    if ($id == 0) {
        return $this->db->insert('tbl_riwayat', $data);
    } else {
        $this->db->where('id', $id);
        return $this->db->update('tbl_riwayat', $data);
    }
}

function get_obat() 
{
    $data_obat = array();
    $this->db->select('nama_obat');
    $this->db->from('tbl_obat');
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        foreach ($query->result_array() as $row) {
            $data_obat[] = $row;
        }
    }
    return $data_obat;
}

查看

<div class="form-group m-b-20">
            <div class="col-xs-12">
                <label for="therapi">Therapi</label>
                <select class=" form-control js-example-basic-multiple" multiple="multiple" name="diagnosa">
                      <?php
                        foreach($obat as $option)
                        {
                            ?>
                            <option value="<?=$option['nama_obat']?>"><?=$option['nama_obat']?></option>
                            <?php
                        }
                        ?>
                    </select>
            </div>
        </div>

这是存储在数据库中的数据的屏幕截图,我将黄色表示为我在多个选择字段中输入的最后一个数据.

And this is a screenshoot of data stored in the database, which I put yellow color is the last data I input in multiple select field.

推荐答案

Php have multiple option to convert array into string some of the option you can try are listed below.
implode() /explode()
json_encode() / json_decode()
serialize() / unserialize()


Above answer telling you how to convert array into serialized . So i  only mention other two option in my answer.

to convert the array into a string and back:
#Option one
function tambahrm() 
{
    $this->load->helper('url');
    $username = trim($this->session->userdata('id_user'));
    $data = array(
        'tgl_berobat' => $this->input->post('tgl_berobat'),
        'anamnesa' => $this->input->post('anamnesa'),
        'diagnosa' => json_encode($this->input->post('diagnosa')),
        'therapi' => $this->input->post('therapi'),
        'keterangan' => $this->input->post('keterangan'),
        'id_user' => $username,
        'id_pasien' => $this->input->post('id_pasien'),
    );

    if ($id == 0) {
        return $this->db->insert('tbl_riwayat', $data);
    } else {
        $this->db->where('id', $id);
        return $this->db->update('tbl_riwayat', $data);
    }
}

function get_obat() 
{
    $data_obat = array();
    $this->db->select('nama_obat');
    $this->db->from('tbl_obat');
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        foreach ($query->result_array() as $row) {
            $row['diagnosa'] = json_decode($row['diagnosa'],true);
            $data_obat[] = $row;
        }
    }
    return $data_obat;
}


#option two

function tambahrm() 
{
    $this->load->helper('url');
    $username = trim($this->session->userdata('id_user'));
    $data = array(
        'tgl_berobat' => $this->input->post('tgl_berobat'),
        'anamnesa' => $this->input->post('anamnesa'),
        'diagnosa' => implode(",",$this->input->post('diagnosa')),
        'therapi' => $this->input->post('therapi'),
        'keterangan' => $this->input->post('keterangan'),
        'id_user' => $username,
        'id_pasien' => $this->input->post('id_pasien'),
    );

    if ($id == 0) {
        return $this->db->insert('tbl_riwayat', $data);
    } else {
        $this->db->where('id', $id);
        return $this->db->update('tbl_riwayat', $data);
    }
}

function get_obat() 
{
    $data_obat = array();
    $this->db->select('nama_obat');
    $this->db->from('tbl_obat');
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        foreach ($query->result_array() as $row) {
            $row['diagnosa'] = explode(",",$row['diagnosa']);
            $data_obat[] = $row;
        }
    }
    return $data_obat;
}

First option using explode and implode and second option is using json_encode and decode.

you can use any option according to your requirement. But i personally suggest you json encode or serialized  pick from this two as they do not change key index of any type of array .

这篇关于如何将数组值转换为字符串并保存到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆