我有一个表单,用户可以根据需要增加或添加字段数。
字段正在成功添加.....
为此我使用javascript,代码在这里..
<script type="application/javascript">
var counter3 = 0;
function addAuthor() {
// Get the main Div in which all the other divs will be added
var mainContainer = document.getElementById('Author');
// Create a new div for holding text and button input elements
var newDiv = document.createElement('div');
// Create a new text input
var newText = document.createElement('input');
newText.type = "text";
//var i = 1;
newText.name = "Author[]";
//newText.value = counter3 + 2 + ". ";
//Counter starts from 2 since we already have one item
//newText.class = "input.text";
// Create a new button input
var newDelButton = document.createElement('input');
newDelButton.type = "button";
newDelButton.value = "-";
// Append new text input to the newDiv
newDiv.appendChild(newText);
// Append new button input to the newDiv
newDiv.appendChild(newDelButton);
// Append newDiv input to the mainContainer div
mainContainer.appendChild(newDiv);
counter3++;
//i++;
// Add a handler to button for deleting the newDiv from the mainContainer
newDelButton.onclick = function() {
mainContainer.removeChild(newDiv);
counter3--;
}
}
</script>
我在这里有一个表格..
<form method="post" action="">
<input type = "text" name="Author[]" />
<input type="button" value="+" id="Authorbutton" onclick="addAuthor()" />
<input type="submit" value="submit" name="submit">
</form>
我使用php和mysql查询将数据保存到数据库中.. 代码是..
<?php
if(isset($_POST['submit']))
{
$authors = $_POST['Author'];
foreach($authors as $author)
{
$sql=mysql_query("INSERT INTO test (number, type) VALUES ('{$_POST['type']}','{$author}')");
if (!$sql){
die('Error: ' . mysql_error());
}
//endforeach;
}
}
?>
但问题是数据无法正确存储在数据库中......
它只保存数据库中的第一个字段,但不保存第二个,第三个,第四个等等......
帮帮我........
答案 0 :(得分:0)
您的查询应该是
$sql=mysql_query("INSERT INTO test (number, type) VALUES ('$_POST['type']','$author')");
并在您的视图文件中,它应该是
<input type = "text" name="Author" />
答案 1 :(得分:0)
只是建议做一个print_r($_REQUEST)
并查看你在请求中获得的所有数据。
另外,您还希望检查firebug / chrome检查工具,检查是否正确地将元素添加到浏览器中。因为查看代码,它似乎没有正确运行。
这里缺少的一件事就是ID - Auther,你通过id获取元素本身就失败了。
另外,还尝试使用该修复程序/补丁运行相同的程序,但无法检查输出。
因此,您希望检查您在请求中获得的确切值。如果表单提交只将单个数据传递回服务器,那么获取响应/所需结果总是很麻烦。
答案 2 :(得分:0)
试试这个,
if(isset($_POST['submit']))
{
$authors = $_POST['Author'];
$valuesToInsert = 1;
for($i=0;$i<count($authors);$i++)
{ $number = $i +1;
$valuesToInsert .= "($number,$authors[$i]),";
}
$valuesToInsert = trim($valuesToInsert,',');
$sql=mysql_query("INSERT INTO test (number, type) VALUES ".$valuesToInsert);
if (!$sql){
die('Error: ' . mysql_error());
}
//endforeach;
}
?>
答案 3 :(得分:0)
您正在尝试提交2个具有相同名称的独立数组。每次添加作者时,您都会获得
$_POST['Author'][1] = 'foo';
而不是
$_POST['Author'][1] = 'foo';
$_POST['Author'][2] = 'bar';
这是你所期待的。您应该尝试使输入已经有索引,即
<input type = "text" name="Author[1]" />
<input type = "text" name="Author[2]" />
等。您可以使用counter3 JS变量逐步增加输入索引,并执行类似
的操作newText.name = "Author[" + counter3 + "]";