我想知道是否可以创建一个插入mysql的动态表。我所拥有的是这个小桌子,用户可以根据需要进行扩展。 (根据需要获得尽可能多的输入行。)
<script>
var count = 0;
$(function(){
$('p#add_field').click(function(){
count += 1;
$('#container').append(
'<strong>Recipient #' + count + '</strong><br />'
+ '<tr><td><label>Client First Name:</label><input id="f_name_' + count + '" name="f_name[]' + '" type="text" /></td><td><label>Client Last Name:</label><input id="l_name_' + count + '" name="l_name[]' + '" type="text" /></td></tr>');
});
});
</script>
JS设置了很好的输入ID和名称(f_name_1,f_name_2,l_name_1,l_name_2等),但是当我尝试迭代输入并将值插入MYSQL时,麻烦就开始了。如果您只提交一行(名称),这非常有用。唉,如果要提交两行(名称),它将在循环中运行并在数据库中插入四行。
即。
约翰·多伊
简爱
约翰艾尔
简·多伊
这是INSERT:
//Loop through added fields
foreach ( $_POST['f_name'] as $key=>$f_name) {
foreach ( $_POST['l_name'] as $key=>$l_name) {
//Insert static values into table
$sql_user = sprintf("INSERT INTO mytable (f_name, l_name) VALUES ('%s','%s')",
mysql_real_escape_string($f_name),
mysql_real_escape_string($l_name));
$result_user = $db->query($sql_user);
}
}
<?php if (!isset($_POST['btnSubmit'])) { ?>
<h1>My Form</h1>
<form name="userdata" method="post" action="">
<h3>Please list the names:</h3>
<table>
<div id="container">
<p id="add_field"><a href="#"><span>+ Add Names</span></a></p>
</div>
</table>
<input type="submit" name="btnSubmit" id="go" value="Submit Your Names" class="btn" />
</form>
<?php } ?>
感谢您的任何建议,因为这是我从未弄清楚的事情。
JE
答案 0 :(得分:1)
您正在遍历彼此嵌套的两个数组,因此您可以获得两者的所有可能组合。您只想遍历其中一个数组,并使用索引查找另一个数组中的相应值:
foreach ( $_POST['f_name'] as $key => $f_name ) {
$l_name = $_POST['l_name'][$key];
// do something with $f_name and $l_name
}