预先填充动态生成的表单php
我遇到了以下问题:我制作了一个表单,该表单基于数据库中满足特定要求的产品的数量以及一定数量的输入。这是我的代码:预先填充动态生成的表单php,php,sql,for-loop,while-loop,Php,Sql,For Loop,While Loop,我遇到了以下问题:我制作了一个表单,该表单基于数据库中满足特定要求的产品的数量以及一定数量的输入。这是我的代码: <?php if (isset($submissionid) && isset($producttitle)) { $sql3 = "SELECT * FROM submissies WHERE submissie_id = '$submissionid' "; $data = $conn ->query($sql3); $result2 =
<?php
if (isset($submissionid) && isset($producttitle)) {
$sql3 = "SELECT * FROM submissies WHERE submissie_id = '$submissionid' ";
$data = $conn ->query($sql3);
$result2 = mysqli_fetch_assoc($data);
$nrofproducts = $result2[$producttitle];
settype($nrofproducts, "integer");
}
$psql = "SELECT * FROM product_status WHERE task_id = '$submissionid' AND product_title = '$producttitle'";
$pdata = $conn ->query($psql);
$presult = (isset($pdata))? mysqli_fetch_assoc($pdata) : '';
//GEBRUIK HASH VOOR PID< OM ZE TOCH IETS UNIEK TE GEVEN
if (!empty($presult)) {
if (isset($_POST['submit'])) {
for ($b = 0; $b < $nrofproducts; $b++ ) {
$sql6 = "DELETE FROM product_status WHERE task_id = '$submissionid' AND product_title = '$producttitle'";
mysqli_query($conn, $sql6);
}
for ( $b = 0; $b < $nrofproducts; $b++ ) {
$serialnr = $_POST['serialnr'. $b];
$pstatus = $_POST['pstatus' . $b];
$additional_info = $_POST['bijzonderheden' . $b];
$merk = $_POST['merk' . $b];
$type = $_POST['type' . $b];
$datechecked = date("d-m-Y");
$sql8 = "INSERT INTO product_status ( product_title, serie_nr, product_status, task_id, bijzonderheden, merk, type, datum_gekeurd) VALUES ('$producttitle', '$serialnr', '$pstatus', '$submissionid', '$additional_info', '$merk', '$type', '$datechecked')";
mysqli_query( $conn, $sql8);
}
header('Location: task.php?id='.$submissionid);
}
} else {
if (isset($_POST['submit'])) {
for ( $a = 0; $a < $nrofproducts; $a++ ) {
$serialnr = $_POST['serialnr'. $a];
$pstatus = $_POST['pstatus' . $a];
$additional_info = $_POST['bijzonderheden' . $a];
$merk = $_POST['merk' . $a];
$type = $_POST['type' . $a];
$datechecked = date("d-m-Y");
$sql4 = "INSERT INTO product_status ( product_title, serie_nr, product_status, task_id, bijzonderheden, merk, type, datum_gekeurd) VALUES ('$producttitle', '$serialnr', '$pstatus', '$submissionid', '$additional_info', '$merk', '$type', '$datechecked')";
mysqli_query( $conn, $sql4);
header('Location: task.php?id='.$submissionid);
}
}
}
?>
<html elements etc>
<?php
for ($i=0; $i < $nrofproducts; $i++):
if ($producttitle == "blusslang" || $producttitle == "vluchtset" ||
$producttitle == "ademluchtslang" || $producttitle == "ademluchtkap" ||
$producttitle == "h2s_meter" || $producttitle == "bhv_verbandtrommer" ||
$producttitle == "aed")
{
$showbrand = "no";
} else {
$showbrand = "yes";
}
?>
<form action="product.php?product=<?=$producttitle;?>&submissionid=<?=$submissionid ;?>" method="post">
<tr>
<th scope="row"><?=$i + 1; ?></th>
<td style="text-align:center"><input type="<?=($showbrand == "yes")? "text": "hidden";?>" class="form-control" name="merk<?= $i;?>" placeholder="Merk"></td>
<td style="text-align:center"><input type="<?=($producttitle == "aed" || $producttitle == "bhv_verbandtrommel")? "hidden" : "text";?>" class="form-control" name="serialnr<?= $i;?>" placeholder="Serienummer" value="<?=($producttitle == "aed" || $producttitle == "bhv_verbandtrommel")? "1" : "" ;?>"></td>
<td style="text-align:center">
<select class="custom-select mr-sm-2" name="pstatus<?php echo $i;?>">
<option value="gekeurd">Gekeurd</option>
<?=($producttitle == "gasmasker" ||
$producttitle == "vluchtset" ||
$producttitle == "ademluchtslang" ||
$producttitle == "ademluchtkap")?""
: '<option value="gerepareerd">Gerepareerd</option>';
?>
<option value="afgekeurd">Afgekeurd</option>
</select>
</td>
<td style="text-align:center">
<input type="text" class="form-control" name="bijzonderheden<?= $i;?>" placeholder="bijzonderheden">
</td>
</tr>
<?php
endfor;
?>
</tbody>
</table>
<input type="submit" class="btn btn-info" name="submit" value="Opslaan">
<!-- KNOP MET CHECKBOX, VOOR NIEUWLEVERING. HIERONDER DAN 1 VELD DIE ZE KUNNEN INVULLEN MET NIEUW PRODUCT EN DAN KUNNEN SUBMITTEN< DAT GAAT DAN NAAR DE FACTUREREN DATABASE. -->
<button class="btn btn-info"><a style="text-decoration: none; color: white;" href="task.php?id=<?=$submissionid; ?>">Ga terug</a></button>
</form>
下面是一个简单的示例,您可以如何做到这一点。
使用循环执行任何您想要的操作,将数据加载到您的输入中。它会的
while($row = mysqli_fetch_assoc($data)){
$row['name'];
$row['age'];
$row['whatver']
}
完成select查询后,开始执行insert查询
if(isset(submit)){
// Do your filters here
$sql = "INSERT INTO your_table(name, age, whatver) VALUES (?, ?, ?)";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "sss", $row['name'], $row['whatver'], $row['age']);
mysqli_stmt_execute($stmt);
}
别忘了过滤输入。
或者您也可以使用更新查询来完成
if(isset(submit)){
// Do your filters here
$sql = "UPDATE your_table SET name=?, age=?, whatver=? WHERE id=?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "isss", $_SESSION['id'], $row['name'], $row['whatver'], $row['age']);
mysqli_stmt_execute($stmt);
}
是否要在数据库中插入?不清楚我想要显示的数据库中已经存在的信息,然后再次提交所有数据。编辑我的帖子,现在更清楚吗?更清楚!您可以在while循环中打开insert查询并插入从select查询获取的数据:谢谢您的回复!所以我想知道,我应该把while循环放在for循环的正下方吗?是的,我理解while循环的部分:)请查看我文章中的编辑部分。我添加了我尝试过的代码,这有点有效(它显示了产品的标题,从数据库中,正如我所希望的!),但抛出了大量的行。由于连接错误,我可以看到图像,不知道为什么:)哦,怪怪的!它基本上显示了无限多的行,但是有了数据,我想要什么!简言之,问题是,如何确保while和for循环不会相互干扰。实际上,我的示例是自动插入数据库,但您的示例是提交的,所以您必须在while循环之外执行,否则您将得到无限查询。在if(isset(submit))中使用相同的查询out-of-while循环,类似于选择和更新,请参阅此链接向下滚动到update.php。它与您想要的几乎相同:
if(isset(submit)){
// Do your filters here
$sql = "INSERT INTO your_table(name, age, whatver) VALUES (?, ?, ?)";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "sss", $row['name'], $row['whatver'], $row['age']);
mysqli_stmt_execute($stmt);
}
if(isset(submit)){
// Do your filters here
$sql = "UPDATE your_table SET name=?, age=?, whatver=? WHERE id=?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "isss", $_SESSION['id'], $row['name'], $row['whatver'], $row['age']);
mysqli_stmt_execute($stmt);
}