我使用动态文本框构建表单,如果单击按钮"添加",它会显示一个新文本框,我使用php和javascript。
但我可以将第一个文本框中的值添加到我的数据库中。
如何在数据库中插入多个值?
<html>
<head>
<title></title>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript"><!--
$(document).ready(function(){
var counter = 2;
$("#add").click(function () {
if(counter==11){
alert("Too many boxes");
return false;
}
$("#textBoxes").append("<div id='d"+counter+"' ><label for='t2'> Textbox "+counter+"</label><input type='textbox' id='t"+counter+"' > </div>\n");
++counter;
});
$("#remove").click(function () {
if(counter==1){
alert("No boxes");
return false;
}
--counter;
$("#d"+counter).remove();
});
});
// --></script>
</head>
<body>
<form method="POST">
<div id='textBoxes'>
<label for="t1"> Textbox 1</label>
<input name="nome" type='textbox' id='t1' ></div>
</div>
<input type='button' value='add' id='add'>
<input type='button' value='remove' id='remove'>
<input type='submit' name="adicionar" value='adicionar'>
</form>
<?php
$dbHost = 'localhost';
$dbUsername = 'hr';
$dbPassword = '';
$dbDatabase = 'r_inserir';
$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");
if(isSet($_POST['adicionar']))
{
$nome=mysql_real_escape_string($_POST['nome']);
$sql= mysql_query("INSERT INTO registos(nome) values ('".$nome."')");
}
?>
</body>
</html>
答案 0 :(得分:1)
在html中创建如下名称:
<input name="nome[]" type='textbox' id='t1' ></div>
然后在你javascript:
$("#textBoxes").append("<div id='d"+counter+"' ><label for='t2'> Textbox "+counter+"</label><input name='nome[]' type='textbox' id='t"+counter+"' > </div>\n");
这些代码将数组数据返回到您的php文件中。然后将其插入您的数据库。
if(isset($_POST['adicionar']))
{
//$nome=mysql_real_escape_string($_POST['nome']);
foreach($_POST['nome'] as $nome){
mysql_query("INSERT INTO registos(nome) values ('".mysql_real_escape_string($nome)."')");
}
//$sql= mysql_query("INSERT INTO registos(nome) values ('".$nome."')");
}
自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。
答案 1 :(得分:0)
首先,你必须为输入字段和id提供动态名称,然后循环遍历从post获取的所有输入值,然后保存它。
e.g:
<input type='textbox' id='t"+counter+"' name='name"+counter+"' >
然后使用$ _POST ['name'],$ _POST ['name1']等将它存储在数据库中。
答案 2 :(得分:0)
不是最佳解决方案,但您可以让表单将文本字段作为数组发送:
<input type="text" name="nome[]" ... />
然后您可以使用以下方法在PHP中访问此数组:
<?php
$_POST['nome'] //array containing all the values
?>
最后,您可以将此数组序列化存储在数据库中。看看http://www.php.net/manual/en/function.serialize.php
<?php
//when you store the data
$nome=mysql_real_escape_string( serialize ($_POST['nome']) );
//....
//when you retrieve the data
$nomes = unserialize($row['nome']); //(for example, returns array with all names)
?>
重要:使用序列化内容时,您可能会将MySQL字段类型更改为TEXT而不是VARCHAR,因为它可能是一个非常长的字符串。
附录:您还应该使用 mysqli 而不是 mysql !