将复选框值传递给数据库,包括其他表单值?

时间:2014-01-22 20:52:21

标签: php forms codeigniter checkbox

我有一个包含各种输入字段和3个复选框的表单。如何将这些复选框值存储在数据库的同一字段中的de数据库中?

这是我的代码

表格:

<div class="pro-input pro-field">
    <label for="name" class="label_title">Name</label>
    <?php echo form_input($title); ?>
</div><!--pro-input-->

<div class="pro-text pro-field">
    <label for="name" class="label_text">Text</label>
    <?php echo form_textarea($text); ?>
</div>

<div class="pro-input pro-field">
    <label for="name" class="label_title">URL</label>
    <?php echo form_input($url);?>
</div><!--pro-input-->

<div class="pro-checkbox pro-field">
    <label for="name" class="label_title">Categorie</label>
    <div class="pro-check">
        <?php
        echo form_label('Code', 'code');
        echo form_checkbox('tags[]', 'code');
        echo form_label('design', 'design');
        echo form_checkbox('tags[]', 'design');
        echo form_label('other', 'other');
        echo form_checkbox('tags[]', 'other');
        ?>
    </div>
</div>

控制器:

public function create()
{
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->form_validation->set_rules('title', 'Title', 'trim|required');
    $this->form_validation->set_rules('text', 'Text', 'trim|required');

    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('admin/header', $data);
        $this->load->view('admin/index', $data);
        $this->load->view('admin/footer', $data);

    }
    else
    {
        $this->portfolio_model->set_project();
        $this->load->view('admin/index', $data);

    }
}

模特:

public function set_project()
{
    $this->load->helper('url');

    $slug = url_title($this->input->post('title'), 'dash', TRUE);

    $data = array(
        'title' => $this->input->post('title'),
        'slug' => $slug,
        'text' => $this->input->post('text'),
        'url' => $this->input->post('url'),
        'tags' => $this->input->post('tags')        
    );

    return $this->db->insert('mydb', $data);
}

数据库中的值显示为“0”。 如果全部选中,我如何在同一个字段中显示3个值?

任何帮助都将受到高度赞赏。谢谢

1 个答案:

答案 0 :(得分:2)

将它们全部存储在同一个db字段中的唯一方法是连接值并存储:

$tags_value = implode("|", $this->input->post('tags');
//should produce something like "code|design|other"

或者您可以为标记创建其他字段并使用它们(这将节省必须处理另一端的连接字符串,以及最后一个选项):

projects_table

id|slug|text|url|tag_code|tag_design|tag_other
----------------------------------------------
 1|hi  |coo |z.c|       0|         1|        1

此外,您可以创建另一个表并使用它:

tags_table

id|project_id|tag
----------------------
 1|       123|design
 2|       123|code
 3|       123|other