Php 从动态字段事件向数据库添加多行
在我的表单中,JS中有一个动态事件,它添加了另一个字段块,以便我的用户可以添加另一个地址:Php 从动态字段事件向数据库添加多行,php,jquery,mysql,Php,Jquery,Mysql,在我的表单中,JS中有一个动态事件,它添加了另一个字段块,以便我的用户可以添加另一个地址: <script type="text/javascript"> $(document).ready(function() { $('#btnAdd').click(function() { var $address = $('#address'); var num = $('.clonedAddress').length; var newNum = new Num
<script type="text/javascript">
$(document).ready(function() {
$('#btnAdd').click(function() {
var $address = $('#address');
var num = $('.clonedAddress').length;
var newNum = new Number(num + 1);
var newElem = $address.clone().attr('id',
'address' + newNum).addClass('clonedAddress');
//set all div id's and the input id's
newElem.children('div').each (function (i) {
this.id = 'input' + (newNum*11 + i);
});
newElem.find('input').each (function () {
this.id = this.id + newNum;
this.name = this.name + newNum;
});
if (num > 0) {
$('.clonedAddress:last').after(newElem);
} else {
$address.after(newElem);
}
$('#btnDel').removeAttr('disabled');
if (newNum == 3) $('#btnAdd').attr('disabled', 'disabled');
});
$('#btnDel').click(function() {
$('.clonedAddress:last').remove();
$('#btnAdd').removeAttr('disabled');
if ($('.clonedAddress').length == 0) {
$('#btnDel').attr('disabled', 'disabled');
}
});
$('#btnDel').attr('disabled', 'disabled');
});
</script>
但是,当我执行表单操作时,当我单击“添加另一个地址”按钮时,页面只会刷新:
<form action="address.php" method="post" name="regForm" id="regForm" >
这些是我的领域:
if(empty($err)) {
for($i = 0; $i < 10; $i++)
{
$Street = $_POST['Street'][$i];
$Line2 = $_POST['Line2'][$i];
$Line3 = $_POST['Line3'][$i];
$Town = $_POST['Town'][$i];
$Postcode = $_POST['Postcode'][$i];
$Country = $_POST['Country'][$i];
$Tele = $_POST['Tele'][$i];
$Fax = $_POST['Fax'][$i];
$Type = $_POST['Type'][$i];
$Mobile = $_POST['Mobile'][$i];
$sql_insert = "INSERT into `address`
(`Street`,`Line2`,`Line3`,`Town`, `Postcode` ,`Country`,`Tele`,`Fax`,`Type`
,`Mobile` )
VALUES
('$Street','$Line2','$Line3','$Town','$Postcode','$Country',
'$Tele','$Fax','$Type', '$Mobile'
)";
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
}
我希望所有地址都转到mysql数据库。
我希望这是清楚的定义按钮如下: 我的简短测试导致我被firefox视为提交类型输入。这意味着FooBar和FooBar是等效的 您可能还希望简化javascript代码。您可以对输入名称使用数组表示法:
<input type="text" name="street[]" />
<input type="text" name="zip[]" />
<input type="text" name="street[]" />
<input type="text" name="zip[]" />
或者只是在你的页面上隐藏一个完整的集合并克隆它,然后追加。我相信我们的jQuery专业人员会知道更好的解决方案
最后:请用
你能不能也显示这个“添加另一个地址”按钮?你没有把它定义为,是吗?请注意:在插入mysql查询之前,请先对字符串值进行sanatize。您很容易受到SQL注入攻击的影响。看,我有四个按钮,一个添加地址,一个删除地址,一个向我的数据库提交表单和一个清除表单
添加地址删除地址
是的,我已经有了类似这条街的输入信息*按钮现在可以工作了,谢谢。提交时出现以下错误:警告:strip_标记期望参数1为字符串,第100行C:\xampp\htdocs\euisample\dbc.php中给出的数组为-$'。cloneddress:last'。删除;注意:第33行的C:\xampp\htdocs\euisample\address.php中未定义的偏移量:2注意:第34行的C:\xampp\htdocs\euisample\address.php中未定义的偏移量:2等在有效的html文档中不能有多个id=Street的输入。无论如何,您不需要ID。警告:strip_标记要求参数1为字符串,在第100行的C:\xampp\htdocs\euisample\dbc.php中给出的数组似乎是在第100行的C:\xampp\htdocs\euisample\dbc.php中为strip_标记传递了一个数组而不是字符串。很乐意帮忙!函数过滤器$data{$data=trimhtmlentitiesstrip_标记$data;if get\u magic\u quotes\u gpc$data=stripslashes$data;$data=mysql\u real\u escape\u string$data;返回$data;}什么是dbc?我不擅长透视,但我认为你可能会做一些类似于strip_tags$\u POST['Street']的事情,而不是strip_tags$\u POST['Street'][$I],并且通知可能来自你的$I=0$i<10$i++循环。您可能希望将其更改为for$i=0$我$('#address').append(
'<div>' +
'<input type="text" name="street[]" />' +
'<input type="text" name="zip[]" />' +
'</div>'
);
$Street = mysql_real_escape_string($_POST['Street'][$i]);
// and so on for the other values.