所以我在页面上显示多个html表单 - 效果很好,因为我只是使用一个简单的循环来显示它80次,但我面临的问题是我想把所有80个表单都提交到多行在我的数据库中。它只提交最后一个表格(即80)
如果有人能帮我找到问题......我真的很感激!在提交这个问题之前我已经做了一些搜索,但我似乎无法找到答案。
这是我的表单构建器
<?php
// Counts the number of forms
$counter = 1;
echo '<form action="insert.php" method="post">';
// Loop through forms
for ($i = 1; $i < 81; $i++) {
$username = 'admin';
$title = 'test';
$name = 'a';
$image_src = '<img src="image/'.$i.'.jpg">';
$transition = 'fade';
$group_name = '0';
echo '<hr>' . '('. $counter .')'. '<br>';
echo "
<label>Username:</label>
<input type='text' name='username' id=' required='required' value='".$username."'/>
<br /><br />
<label>Title:</label>
<input type='text' name='title' id=' required='required' value='".$title."'/>
<br/><br />
<label>Name:</label>
<input type='text' name='name' id=' required='required' value='".$name."'/>
<br/><br />
<label>Content:</label>
<input type='text' name='content' id=' required='required' value='".$image_src."'/>
<br/><br />
<label>Image:</label>
<input type='text' name='image' id=' required='required' value='images/".$i.".jpg'/>
<br/><br />
<label>CSS Animate:</label>
<input type='text' name='cssanimate' id=' required='required' value='".$transition."'/>
<br/><br />
<label>Group Name:</label>
<input type='text' name='group_name' id=' value='0'/>
<br/><br />
";
$counter++;
}
echo '<input type="submit" value="Submit" name="submit"/>';
echo '</form>';
?>
<小时/> 这是我的PHP代码:(insert.php)
<?php
$con=mysqli_connect("localhost","admin","password","database_name");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO table_name (username, title, name, content, image, cssanimate, group_name, group_sort) VALUES ('".$_POST["username"]."', '".$_POST["title"]."', '".$_POST["name"]."', '".$_POST["content"]."', '".$_POST["image"]."', '".$_POST["cssanimate"]."', '".$_POST["group_name"]."', '".$_POST["group_sort"]."') ";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
} echo "Added!";
mysqli_close($con);
?>
答案 0 :(得分:2)
如果您有80个具有此名称的元素:
name='username'
那么这段代码将如何知道使用哪一个?:
$_POST['username']
基本上,当您的浏览器构建表单提交时,相同名称的每个连续元素都会覆盖前一个元素。所以你最后只得到最后一条记录。
相反,给它们一个数组样式的名称:
name='username[]'
(对所有重复的表单元素重复。)
然后在PHP代码中,这本身就是一个数组:
$_POST['username']
你可以遍历那个数组:
for ($i = 0; $i < count($_POST['username']); $i++) {
$username = $_POST['username'][$i];
$title = $_POST['title'][$i];
// etc.
}
这假设您的所有数组都是相同的长度。其中,鉴于此HTML,我认为应该。但是为了以防万一,您可以添加错误检查。无论哪种方式,循环的每次迭代都会构建等同于&#34;记录&#34;已提交。
从那里你应该能够用这些变量构建你的SQL查询。 但,请注意您的当前方式非常不安全且对 SQL注入持开放态度。要纠正错误,this is a good place to start。
附注:您的HTML具有无效的id
属性。此外,如果您想要在该循环中指定id
属性,那么您需要确保它们在某种程度上不同。 HTML中重复的id
无效。