【发布时间】:2020-05-17 18:35:05
【问题描述】:
在我的应用程序中有一个具有两个选择字段的表单,其中最后一个选择设置为具有多项选择。我需要的是插入第一对选择字段作为单个记录插入到数据库中。当我尝试使用 for 循环执行此操作时,我可以将记录作为单行插入,直到并且除非我为我的第二个选择字段仅选择一个值。但是如果我选择多个字段进行第二次选择,则记录不正确。
这里用户也可以通过点击ADD按钮来添加更多的div
<div id="scope-brand-div">
<div class="col-md-6">
<div class="form-group">
<label for="scope">Project Scope</label>
<select name="scope[]" class="form-control scope-select">
<option value=""></option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="brands_used">Brands Used</label>
<select multiple name="brands_used[]" class="form-control brand-select">
<option value=""></option>
<option>D</option>
<option>E</option>
<option>F</option>
</select>
</div>
</div>
</div>
php
$s = $this->input->post('scope');
$b = $this->input->post('brands_used');
foreach( $s as $key => $n ) {
$rows[] = $n.",".$b[$key];
}
print_r($rows);
场景 1
如果我为两个选择选择单个字段,输出将是:
A, D
B, E
场景 2
如果我为第二个选择选择多个字段,例如 A,(D,E) 和 B,F。在结果上方使用相同的循环将是:
A, D
B, E
如果我为第二个选择字段广告选择多个字段,我如何插入相同的字段,前提是用户可以添加更多像这样的 div。
编辑 1
<div id="scope-brand-div">
<div class="col-md-6">
<div class="form-group">
<label for="scope"><?php echo $this->lang->line('xin_project_scope');?></label>
<select name="scope[]" class="form-control select-border-color border-warning scope-select" data-plugin="select_hrm" data-placeholder="<?php echo $this->lang->line('xin_project_scope');?>">
<option value=""></option>
<?php foreach($all_project_scope as $scope) { ?>
<option value="<?php echo $scope->scope_name; ?>"><?php echo $scope->scope_name; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group brands-ajax">
<label for="brands_used"><?php echo $this->lang->line('xin_brands_used');?></label>
<select multiple name="brands_used[]" class="form-control select-border-color border-warning brand-select" data-plugin="select_hrm" data-placeholder="<?php echo $this->lang->line('xin_brands_used');?>">
<option value=""></option>
<?php foreach($all_brands as $brands) { ?>
<option value="<?php echo $brands->brand_name; ?>"><?php echo $brands->brand_name; ?></option>
<?php } ?>
</select>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#add-new').click(function(){
var invoice_items = '<div id="scope-brand-div">'
+ '<div class="col-md-6">'
+'<div class="form-group">'
+ '<label for="scope"><?php echo $this->lang->line('xin_project_scope');?></label>'
+'<select name="scope[]" class="form-control scope-select" data-placeholder="<?php echo $this->lang->line('xin_project_scope');?>">'
+'<option value=""></option>'
<?php foreach($all_project_scope as $scope) { ?>
+'<option value="<?php echo $scope->scope_name; ?>"><?php echo $scope->scope_name; ?></option>'
<?php } ?>
+ '</select>'
+ '</div>'
+ '</div>'
+ '<div class="col-md-6">'
+ '<div class="form-group brands-ajax">'
+ '<label for="brands_used"><?php echo $this->lang->line('xin_brands_used');?></label>'
+'<select name="brands_used[]" class="form-control brand-select" data-placeholder="<?php echo $this->lang->line('xin_brands_used');?>">'
+'<option value=""></option>'
<?php foreach($all_brands as $brands) { ?>
+'<option value="<?php echo $brands->brand_name; ?>"><?php echo $brands->brand_name; ?></option>'
<?php } ?>
+'</select>'
+'</div>'
+ '</div>'
+'</div>'
$('#clone-parent').append(invoice_items).fadeIn(500);
});
});
</script>
<?php
public function add_project() {
$s = $this->input->post('scope');
$b = $this->input->post('brands_used');
foreach( $s as $key => $n ) {
$rows[] = $n.",".$b[$key];
//insert query
}
}
?>
编辑 2
echo var_export($this->input->post('brands_used'));
array (
0 =>
array (
0 => 'Opterna',
),
1 =>
array (
0 => 'Norden',
),
2 => 'Opterna',
)
echo var_export($this->input->post('scope'));
array (
0 => 'ACS',
1 => 'SMA TV',
)
【问题讨论】:
-
你能发布你的完整代码吗
-
请看我的编辑。我已经添加了代码。
-
我认为您正在考虑制作更深的
$_POST数组结构,以便您可以将数据组分开。考虑scope[][]。我认为您需要一个计数器变量来声明第一级分组索引——否则自动递增将不会如所愿。这只是一个猜测/提示——不是答案。 -
<option value=""></option>可以安全地缩减为<option></option> -
添加到我的编辑@mick