所以我让客户填写表格。表格包含以下信息:
name,
weight,
number of axles,
number of bogies
等
填写表单后,会将其发送到数据库,放在表train_information
中,如下所示:
现在,number_of_axles是一个FK,并且在插入火车后填充也是表axle
。表格如下:
现在,我拥有的是:
<div id="distances">
<tr>
<?php
$_POST['number_of_axles'];
if(isset($_POST['number_of_axles'])){
for($i=0; $i<$_POST['number_of_axles']; $i++){
echo "<td>" . "<input type='text' placeholder='Distance $i' id='field' name='distance[$i]'>" . "</td>";
}
}
?>
</tr>
</div>
这是在他们提交表单之后,另一页显示了基于轴数的文本字段数。
例如:他们输入了12个轴(见图像)。他们现在可以看到12个文本字段。
在这些领域,他们需要增加距离。当他们按下提交(提交按钮还没有)时,我希望在表axle
中填写距离。 (见第二张图片,现在说它为NULL)
我该怎么做???
答案 0 :(得分:0)
你可以遍历$ _POST ['distance'],此时这将是一个数组,因此构建插入查询。但你也需要通过train_id。
$train_id = $_POST['train_id'];
$distances = $_POST['distance'];
$sql = "INSERT INTO axle VALUES ";
$values = array();
foreach ($distances as $axle => $distance) {
$values = " (NULL, $train_id, $axle, $distance)";
}
$sql .= implode($values, ",");
$sql .= ';';
这是构建查询的简单实现,可以(并且可能应该)更改适合在PDO或其他lib中工作。
答案 1 :(得分:0)
将 axle_id 用作input
名称属性的一部分:name=distance[$axle_id]
。例如:
axles.php
<?php
// assuming db connection $conn available
// insert train info, makes mysqli_insert_id available
// form action="axles_update.php"
$result = mysqli_query($conn, // mysqli_insert_id is trusted
"SELECT axle_id FROM axle WHERE train_id = " . mysqli_insert_id($conn));
$ii = 1;
while ($row = mysqli_fetch_assoc($result)){
echo "<td><input type='text' placeholder='Distance " . $ii+ .
"' id='field' name='distance[" . $row['axle_id'] . "]'></td>\n";
}
?>
update_axles.php
<?php
// assuming db connection $conn available
$stmt = mysqli_prepare($conn, "UPDATE axle SET distance = ? WHERE axle_id = ?");
mysqli_stmt_bind_param($stmt, 'si', $value, $key);
foreach ( $_POST['distance'] as $key => $value ) {
if ( '' != $value ) { mysqli_stmt_execute($stmt); }
}
mysqli_stmt_close($stmt);
?>
这里缺少很多细节和检查,但它显示了基本概念。