这是我动态表行的html代码。这会通过单击“添加新”按钮复制表字段。问题是我无法将所有填充的数据插入数据库。如果你可以帮助我会很好。非常感谢。
<!-- Time&Task -->
<div class="box-body">
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<br>
<table class="table table-striped" id="maintable" width="50%" cellpadding="0" cellspacing="0" class="pdzn_tbl1" border="0px">
<tr>
<th>Time Start:</th>
<th>Time End:</th>
<th>Task:</th>
<th>Comment:</th>
</tr>
<tr class="rows">
<td style="padding:5px;">
<input type="time" name="item[0][timestart]" />
</td>
<td style="padding:5px;">
<input type="time" name="item[0][timeend]" />
</td>
<td style="padding:5px;">
<input type="text" name="item[0][tasks]" />
</td>
<td style="padding:5px;">
<input type="text" name="item[0][comment]" />
</td>
</tr>
</table>
<div id="add_new">ADD NEW</div>
<?php
if (isset($_POST['item']) && is_array($_POST['item'])) {
$items = $_POST['item'];
$i = 0;
foreach($items as $key => $value) {
echo 'Item '.$i++.': '.$value['timestart'].' '.$value['timeend'].' '.$value['tasks'].' '.value['comment'].'<br />';
}
}
?>
</div>
</div>
</div><!-- /.box-body -->
这是我的SQL查询插入。这是问题所在。我不知道如何循环插入数据库。谢谢。 :d
<?php
if (isset($_POST['data']) && !empty($_POST['data'])) {
$timestart = htmlspecialchars($_POST['timestart']);
$timeend = htmlspecialchars($_POST['timeend']);
$tasks = htmlspecialchars($_POST['tasks']);
$comment = htmlspecialchars($_POST['comment']);
include('DBConnect.php');
$SQL = "INSERT INTO TSTable (timestart,timeend,tasks,comment) VALUES ('$timestart','$timeend','$tasks','$comment')";
if (mysqli_query($conn, $SQL)) {
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
!大家好,我已经找到了解决方案。这是正确的代码。我希望它可以帮助需要它的人。 html仍然是相同的,只需要修复sql查询部分。
if (isset($_POST['data'])) {
$timestart = $_POST['timestart'];
$timeend = $_POST['timeend'];
$tasks = $_POST['tasks'];
$comment = $_POST['comment'];
include('DBConnect.php');
$count= count($timestart);
for ($i=0; $i< $count; $i++){
if($timestart[$i] != null || !empty($timestart[$i])){
$SQL = "INSERT INTO TSTable (timestart,timeend,tasks,comment) VALUES ( '$timestart[$i]','$timeend[$i]','$tasks[$i]','$comment[$i]')";
}
if (mysqli_query($conn, $SQL)) {
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
}
答案 0 :(得分:0)
这里有一些东西可以让你的生活变得更容易。
具有相同名称的输入元素将按其显示的顺序作为数组提交。标准程序是像这样布局你的html(为简洁起见删除了一些字段);
<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr>
<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr>
<td><td><input name=timestart><input name=timeend><input name=tasks></td></tr>
... etc
这将为您提供帖子结构,例如;
Array
(
[timestart] => Array
(
[0] => timestart 1
[1] => timestart 2
[2] => timestart 3
)
[timeend] => Array
(
[0] => timeend 1
[1] => timeend 2
[2] => timeend 3
)
[task] => Array
(
[0] => task 1
[1] => task 2
[2] => task 3
));
插入;
$timestart = $_POST['timestart'];
$timeend = $_POST['timeend'];
$task = $_POST['task'];
for($i=1 ; $i < count($timestart) ; $i++)
{
$sql = "INSERT INTO TSTable VALUES($timestart[$i],$timeend[$i],$task[$i]);"
... more code goes here..
}