当我想添加
时data1 sum1
data2 sum2
到数据库, 实际发生了什么:
data1 data1
sum1 sum1
data2 data2
sum2 sum2
我的表单元素是;
<input id="alan_" name="alanlar[]" type="text" class="form-control">
<input id="miktar_" name="alanlar[]" type="text" class="form-control">
和PHP;
foreach ($_POST['alanlar'] as $key => $value) {
$baglanti->query(sprintf("INSERT INTO ders (ders_adi, ders_miktar) VALUES ('%s','%s')", ($value),($value)));
$eklenen_ders_id = $baglanti->insert_id;
Jquery代码:
var sayac = 1;
$(function () {
$('#ekle').click(function () {
sayac += 1;
$('#dersler tbody').append(
'<tr><th><strong>Ders ' + sayac + '</strong></th><td><input id="alan_' + sayac + '" name="alanlar[]' + '" type="text" class="form-control" /></td><td><input id="miktar_' + sayac + '" name="alanlar[]' + '" type="text" class="form-control" /></td><td><a href="#" class="sil btn btn-danger">Sil</a></td></tr> ');
});
谢谢大家。
答案 0 :(得分:1)
这种情况正在发生,因为您将两个值都带到单个数组,因此您无法区分它们。 Foreach对两个值都运行两次,并且您为两列插入相同的值。
要解决此问题,请为这两个值采用不同的名称或定义不同的数组键。
<input id="alan_" name="data[]" type="text" class="form-control">
<input id="miktar_" name="sum[]" type="text" class="form-control">
然后迭代一个数组并在另一个数组中使用该键,因为这两个都是文本字段,这不会有问题。像这样迭代:
foreach ($_POST['data'] as $key => $value) {
$baglanti->query(sprintf("INSERT INTO ders (data, sum) VALUES ('%s','%s')", ($value),($_POST['sum'][$key])));
$eklenen_ders_id = $baglanti->insert_id;
}
希望它有所帮助。
答案 1 :(得分:-3)
明智地设置表单控件名称大大增强了服务器上的表单数据处理:
HTML
<input name="alanlar[0][alan]" type="text" class="form-control">
<input name="alanlar[0][miktar]" type="text" class="form-control">
<input name="alanlar[1][alan]" type="text" class="form-control">
<input name="alanlar[1][miktar]" type="text" class="form-control">
<!-- etc. -->
PHP
foreach ($_POST['alanlar'] as $set) {
$alan = $set['alan'];
$miktar = $set['miktar'];
// ...
}