2014-12-03 57 views
1

我需要创建包含以下内容的动态文本域:姓氏年龄性别。我应该有一个名为“添加新用户”的按钮,它只是添加一个新的行,我可以键入姓氏年龄性别。我需要它是动态的,因为我不知道每个事件会添加多少用户。我还需要在数据库中存储姓氏年龄性别(x)添加行的数量。如何创建多个动态表单域并在mysql数据库中插入

我需要类似于下面的东西:但是我需要另外3个相邻的行。所以我会“INSERT INTO my_hobbies(姓名,年龄,性别)

我知道这听起来很牵强,但我这个苦苦挣扎。

<?php 
require("dbconn.php"); 
?> 

<html> 
<head> 
<title></title> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
var counter = 0; 
$(function(){ 
$('p#add_field').click(function(){ 
counter += 1; 
$('#container').append(
'<strong>Hobby No. ' + counter + '</strong><br />' 
+ '<input id="field_' + counter + '" name="dynfields[]' + '" type="text" /><br />'); 

}); 
}); 
</script> 

<body> 

<?php 
if (isset($_POST['submit_val'])) { 
if ($_POST['dynfields']) { 
foreach ($_POST['dynfields'] as $key=>$value) { 
$values = mysql_real_escape_string($value); 
$query = mysql_query("INSERT INTO my_hobbies (hobbies) VALUES ('$values')", $connection); 

} 
} 

echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Hobbies Added</h2></i>"; 

mysql_close(); 
} 
?> 
<?php if (!isset($_POST['submit_val'])) { ?> 
<h1>Add your Hobbies</h1> 
<form method="post" action=""> 


<div id="container"> 
<p id="add_field"><a href="#"><span>Click To Add Hobbies</span></a></p> 
</div> 

<input type="submit" name="submit_val" value="Submit" /> 
</form> 
<?php } ?> 

</body> 
</html> 
+0

切换到mysqli_ *或PDO。 mysql函数不再维护。 – alda1234 2014-12-03 13:26:12

回答

5

你已经有一个JavaScript计数器,以便您可以使用它有可能识别输入字段属于一起根据你的例子可以使用这样的事情:。

$(function(){ 
    $('p#add_field').click(function(){ 
     counter += 1; 
     $('#container').append(
     '<strong>Hobby No. ' + counter + '</strong><br />' 
     + '<input id="field_' + counter + '" name="dynfields['+counter+'][name]' + '" type="text" /><br />' + 
     + '<input id="field_' + counter + '" name="dynfields['+counter+'][surname]' + '" type="text" /><br />' + 
     + '<input id="field_' + counter + '" name="dynfields['+counter+'][age]' + '" type="text" /><br />' + 
     + '<input id="field_' + counter + '" name="dynfields['+counter+'][gender]' + '" type="text" /><br />'); 

    }); 
}); 
</script> 

您可以赶上在你的PHP以同样的方式只注意到该值现在是一个数组,而不是单一的值,但您可以使用array_keysarray_values以简单的方式创建查询。试试这个在PHP中:

if (isset($_POST['submit_val'])) { 
    if ($_POST['dynfields']) { 
     foreach ($_POST['dynfields'] as $key=>$fieldArray) { 

      $keys = array_keys($fieldArray); 
      $values = array_map("mysql_real_escape_string",$fieldArray); 

      $query = mysql_query("INSERT INTO my_hobbies (".implode(',',$keys).") VALUES ('".implode('\',\'',$values)."')", $connection); 
     } 
    } 

    echo "<i><h2><strong>" . count($_POST['dynfields']) . "</strong> Hobbies Added</h2></i>"; 

    mysql_close(); 
} 

是的,@ alda1234是正确的。你不应该使用mysql_*,因为它已被弃用。

+1

@ S.Pols.for这个答案我已经从很多天搜索,最终得到它。感谢你让我的一天。 – iCoders 2017-02-05 10:43:31