Php Codeigniter将复选框数组值传递到mysql数据库
提交表单后,只想将复选框数组值传递给mysql数据库表(表列:id、fanta、cola、sprite)。每个值应插入单独的字段中(即不使用内爆/爆炸函数)。最好的解决方案是只传递“1”(如果选中)或“0”(如果未选中)。请帮帮我:) 这是我的型号:Php Codeigniter将复选框数组值传递到mysql数据库,php,mysql,codeigniter,Php,Mysql,Codeigniter,提交表单后,只想将复选框数组值传递给mysql数据库表(表列:id、fanta、cola、sprite)。每个值应插入单独的字段中(即不使用内爆/爆炸函数)。最好的解决方案是只传递“1”(如果选中)或“0”(如果未选中)。请帮帮我:) 这是我的型号: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Model_example2 extends CI_Model { func
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_example2 extends CI_Model {
function __construct()
{
//Call the Model constructor
parent::__construct();
}
public function did_add() {
$data = array(
'fanta' => $this->input->post('fanta'),
'cola' => $this->input->post('cola'),
'sprite' => $this->input->post('sprite'),
);
$query = $this->db->insert('table_example2', $data);
if ($query) {
return true;}
else {
return false;}
}
}
<div >
<?php
$this->load->helper("form","file","html","url");
echo $message;
echo validation_errors();
echo form_open("example2/add");
echo form_label("Drink:<br>","type");
?>
<input type="checkbox" name="types[]" value="fanta" <?php echo set_checkbox('types[]', 'fanta', FALSE); ?>/>Fanta<br />
<input type="checkbox" name="types[]" value="cola" <?php echo set_checkbox('types[]', 'cola', FALSE); ?>/>Coca Cola<br />
<input type="checkbox" name="types[]" value="sprite" <?php echo set_checkbox('types[]', 'sprite', FALSE); ?>/>Sprite<br />
echo form_submit("Submit", "Add");
echo form_close();
</div>
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Example2 extends MX_Controller {
public function add() {
$this->load->library('form_validation');
$this->load->model('model_example2');
$this->form_validation->set_rules('types[]', 'Drink','required');
if($this->form_validation->run()){
$this->model_example2->did_add();
$data["message"] = "Great job!";
$this->load->view("view_add_success",$data);
}
else {
$data["message"] = "";
$this->load->view("view_example2",$data);
}
}
}
/>可口可乐
你可以这样试试
public function did_add() {
$types = $this->input->post('types');
$data = array(
'fanta' => 0,
'cola' => 0,
'sprite' => 0,
);
foreach ($types as $type) {
$data[$type] = 1;
}
$query = $this->db->insert('table_example2', $data);
if ($query) {
return true;
}
else {
return false;
}
}
在db中存储类型的列名是什么?你有没有像“芬达”、“可乐”这样的栏目名。。?如果是这样,那么您可以用芬达、可乐等命名复选框。有三个列名:芬达、可乐、雪碧。我将复选框命名为“类型”,以便验证复选框字段(至少应选择一个(>=1)):$this->form_validation->set_rules('types[],'Drink','required');然后,您可以使用字段名称命名复选框,但我将无法验证复选框组,因此至少应选择一个(>=1)非常感谢!您的代码是上述问题的完美解决方案。我真的很感谢你的帮助:)嗨,明哈兹,也许你可以看看我的问题,帮我找到解决办法: