【发布时间】:2017-12-28 16:36:01
【问题描述】:
我真的需要你的帮助我已经为此工作了几周,我有一个动态字段,它是一个名为“大小”的数组,还有一个名为“类别”的字段,每个类别都有一个或多个大小.现在我需要将数据保存到两个表中。类别和大小是相互关联的,这里:
(我的数据库表)
CREATE TABLE `category` (
`category_id` int(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(55) NOT NULL,
PRIMARY KEY (`category_id`)
)
CREATE TABLE `sizes` (
`size_id` int(11) NOT NULL AUTO_INCREMENT,
`size` varchar(45) NOT NULL,
`category_id` int(11) NOT NULL,
PRIMARY KEY (`size_id`),
KEY `cat_fk_idx` (`category_id`),
CONSTRAINT `cat_fk` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
)
这是我的观点(category.php)
<div class="col-sm-5">
<?php echo $this->session->flashdata('errorMessage');?>
<?php echo $this->session->flashdata('successMessage');?>
<?php echo form_open('category_con/add_category'); ?>
<?php echo form_fieldset('<h1 class="text-danger">Categories</h1>'); ?>
<div class="form-group">
<label for='Username'>Add New Category</label>
<input type="text" name="category_name" class="form-control" placeholder="Add new Category here">
</div>
<script src="assets/js/jquery.min.js"></script>
<div class="form-group">
<form name="add_name" id="add_name">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td><input type="text" name="size[]" placeholder="Add Size" class="form-control name_list" /></td>
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
</tr>
</table>
</div>
</form>
</div>
<div class="form-group">
<input type="submit" name="save_category" class="btn btn-success" value="Save Category">
</div>
</div>
<script>
$(document).ready(function(){
var i=1;
$('#add').click(function(){
i++;
$('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="size[]" placeholder="Add Size" class="form-control name_list" /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
});
$(document).on('click', '.btn_remove', function(){
var button_id = $(this).attr("id");
$('#row'+button_id+'').remove();
});
});
</script>
<?php echo form_close(); ?>
我的控制器(category_con.php)
public function add_category( ) {
$this->form_validation->set_rules('category_name', 'Category', 'required|alpha');
if ($this->form_validation->run() == FALSE) {
$this->session->set_flashdata('errorMessage', '<div class="alert alert-danger"> '.validation_errors() . '</div>');
redirect(base_url('categories'));
}else {
$this->load->model('categories_model');
$exec = $this->categories_model->categorysize();
if ($exec) {
$this->session->set_flashdata('successMessage', '<div class="alert alert-success"> Category Added Successfully</div>');
redirect(base_url('categories'));
}else {
$this->session->set_flashdata('errorMessage', '<div class="alert alert-danger">Opps... Something Went Wrong Please Try Again.</div>' );
redirect(base_url('categories'));
}
}
}
还有我的模型(categories_model.php)
public function categorysize()
{
$this->load->database();
$category_name = $this->input->post('category_name');
$this->db->query("INSERT INTO category (category_name) VALUES (".$this->db->escape($category_name).")");
$last_row_id = $this->db->insert_id(); // Gets last row id ( category_id )
for($i = 0; $i < count ($_POST['size']); $i++){
$form_data[] = array(
'size' => $_POST['size'][$i] ,
'category_id' => "$last_row_id"
);
$this->db->insert_batch('sizes', $form_data);
}
}
点击保存按钮后,将类别保存在类别表中,尺寸保存在sizes表和category_id上,但第一个输入会重复。它显示了错误消息“Opps ...出现错误,请重试”,我将它放在我的控制器上,但如果我删除错误消息,即使我重定向页面,我也会得到一个 blnk 页面。
我希望你能帮助我。谢谢!!
【问题讨论】:
-
你没有从
categorysize()返回任何东西,所以它总是会命中你的else声明。 -
将您的
insert_batch()移到循环外部并return它。 -
是的,你是对的!成功了,非常感谢。
标签: php mysql codeigniter