【发布时间】:2014-10-17 10:22:50
【问题描述】:
我无法从 javascript 添加行中获取值作为一行动态进入 MySql,只有表单值显示为下面的表单作为一行。我把它做成一个数组,但没有这样的运气,我已经用多种方式尝试了这段代码。我不知道我做错了什么,请写出正确的方法。
以我的代码为例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Fields js/php to MySql need to submit dynamically to the database</title>
<?php
require ('database.php');
?>
<script type="text/javascript">
var counter = 1;
var collector = "";
function addfields(indx)
{
var tbl = document.getElementById('table_id');
var newtr = document.createElement('tr');
counter = counter + indx;
newtr.setAttribute('id','tr'+counter);
newtr.innerHTML = '<td><input type="checkbox" name="checkb'+counter+'" id="checkb'+counter+'" value="'+counter+'" onclick="checkme('+counter+')"></td><td><input type="text" name="text1[]"></td><td><textarea name="textarea1[]"></textarea></td>';
tbl.appendChild(newtr);
}
function checkme(dx)
{
collector += dx+",";
}
function deletetherow(indx)
{
var col = collector.split(",");
for (var i = 0; i < col.length; i++)
{
var remvelem = document.getElementById('tr'+col[i]);
var chckbx = document.getElementById("checkb"+col[i]);
if(remvelem && chckbx.checked)
{
var tbl = document.getElementById('table_id');
tbl.removeChild(remvelem);
}
}
}
</script>
</head>
<body>
<form enctype="multipart/form-data" id="1" style="background-color:#ffffff;" action="<?php echo $_SERVER['PHP_SELF']; ?>"></form>
<table id="table_id" >
<tr id="tr1" class="trmain">
<td>
</td>
<td>
<input type="text" name="text1[]">
</td>
<td>
<textarea name="textarea1[]"></textarea>
</td>
</tr>
</table>
<input type="button" value="Add" onClick="addfields(1);" />
<input type="button" value="Delete" onClick="deletetherow()" />
<input type="submit" value="Send" id="submit" name="submit"/>
<?php
if(isset($_POST['submit'])) {
for ($i=0; $i < count($_POST['text1']); $i++ )
{
$ced = stripslashes($_POST['text1'][$i]);
$erg = stripslashes($_POST['textarea1'][$i]);
$bnt = mysql_query("INSERT INTO tablename (first, second) VALUES ('$ced', '$erg')")or
die ('Error: '. mysql_error() );
}
}
?>
</body>
</html>
【问题讨论】:
-
您在每个循环上都覆盖了
$ced和$erg,因此只会插入最终值。将您的$bnt = mysql_query("INSERT INTO tablename ...放在您的for()循环中。另外,你为什么要双重查询->$result = mysql_query($bnt);?由于$bnt = mysql_query(不需要第二个$result = mysql_query(。 -
肖恩,感谢您的回复,我已经编辑了代码。 $result=MySQL_query(... 最初分配了一条成功消息,我没有添加整个代码,抱歉。无论如何,它仍然只将第一组值发布到数据库中,我从逻辑上理解我的数组在哪里包括 MySQL。我试图爆炸数据,但我不知道这是否是我应该做的?任何进一步的建议或你能得到这个工作。再次感谢你的时间和帮助 :)
标签: javascript php mysql post dynamic