gpt4 book ai didi

php - 使用隐藏字段和复选框将值插入数据库

转载 作者:搜寻专家 更新时间:2023-10-31 21:47:59 26 4
gpt4 key购买 nike

美好的一天!我目前在使用复选框和隐藏字段插入值时遇到问题。非常感谢任何提示或解决方案。

所以我的问题是:我有一个只有复选框的表单和一个提交按钮,如果我选中复选框中的一个值,将显示一个隐藏的上传字段隐藏的值必须连接到所选值在复选框中。如何将隐藏值插入数据库中相应的复选框值。例如

HTML:

<label class="form-check-label">
<input class="form-check-input" name="value[]" type="checkbox" value="Venue">
Value 1
<div id="hidden_fields">
This is hidden: <input type="text" id="hidden_one" name="hidden_one[]">
</div>
</label>
<br>
<label class="form-check-label">
<input class="form-check-input" name="value[]" type="checkbox" value="Venue">
Value 2
<div id="hidden_fields">
This is hidden: <input type="text" id="hidden_one" name="hidden_one[]">
</div>
</label>
<br>

PHP:(更新)这就是我现在拥有的。当我不选中第一个复选框时。第二个复选框中的 hidden_​​one 未插入

foreach($_POST['value'] as $key=>$value ){
$hidden_one = $_POST["hidden_one"][$key];
$sql = "INSERT INTO sample (value, hidden_one) VALUES ('$value','$hidden_one')";
$result = mysqli_query($connection, $sql);

}

如果我检查值 1 并在隐藏表单中输入 sample1,然后我检查值 2 并在隐藏表单中输入 sample2。样本 1 必须与值 1 在同一列中,样本 2 必须与值 2 在同一列中。它没有正确插入

更新:所以我把代码改成了这个foreach($_POST['value'] as $key=>$value ){
$hidden_​​one = $_POST["hidden_​​one"][$key];
但问题有时是它没有正确插入。有时 hidden_​​one 在数据库中是空的。我现在真的迷路了。在别处找不到解决方案。

This is my updated form

我看到一个模式,当我跳过一个复选框时,比如我选中 value1,然后跳过 value2,然后选中 value3。未插入 value3 hidden。仍然没有解决 :( 大声笑这让我发疯。在戒烟的边缘。大声笑

最佳答案

将复选框的值插入隐藏输入字段的一种方法是创建一个接受 $(this).val() 的点击函数,这是您点击的元素值。然后您可以将该值放入变量中。然后,您转到目标复选框的 parent 元素/容器并找到相应的输入字段。然后,您只需使用复选框的声明值设置该输入字段的值。

请注意,此 JavaScript 的表示法是在 jQuery 中,您需要包含一个 jQuery 库才能使此解决方案起作用。

$(document).ready(function () { 
$('[name="value[]"]').click(function(){
var mySelect=$(this).val();

if( $(this).prop('checked') ) {
$(this).parent().find('input[name="hidden_one[]"]').val(mySelect);
}
else {
$(this).parent().find('input[name="hidden_one[]"]').val("");
}
})
});

例子:

$(document).ready(function () {	
$('[name="value[]"]').click(function(){
var mySelect=$(this).val();

if( $(this).prop('checked') ) {
$(this).parent().find('input[name="hidden_one[]"]').val(mySelect);
}
else {
$(this).parent().find('input[name="hidden_one[]"]').val("");
}
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="form-check-label">
<input class="form-check-input" name="value[]" type="checkbox" value="Venue 1">
Value 1
<div id="hidden_fields">
This is hidden: <input type="text" id="hidden_one" name="hidden_one[]">
</div>
</label>
<br>
<label class="form-check-label">
<input class="form-check-input" name="value[]" type="checkbox" value="Venue 2">
Value 2
<div id="hidden_fields">
This is hidden: <input type="text" id="hidden_one" name="hidden_one[]">
</div>
</label>
<br>

Direct JS Fiddle link

当涉及到将值插入数据库时​​,我很难给出一个简洁的答案,因为我没有关于你的应用程序的任何调试信息,所以我不知道你有没有构造它正确。我假设您有一个 AJAX 函数或一个表单操作来发布您的值。正如您在自己的尝试中指出的那样,这些值是作为一个数组出现的,您必须循环遍历。但是,我不确定嵌套的 foreach 循环。

如果您需要任何进一步的帮助,请告诉我,在这种情况下,请使用潜在的错误消息、相应的表单/ajax 代码更新您的问题,如果您的 PHP 文件包含任何其他相关信息,也请添加。

一个粗略的例子可能是:

<?php
$hidden_one_array=array_values($_POST['hidden_one']); //our posted array

$i=0; // iterator
$length=count($hidden_one_array); //length of the array

while($i < $length) {
$sql="INSERT INTO sample (value, hidden_one) VALUES ('$value','$hidden_one_array[$i]')";
$result=mysqli_query($connection, $sql);

$i++;
}
?>

我们在这里所做的基本上是遍历数组,使用迭代器值作为我们指向每个相应数组索引的索引指针以插入到数据库中。

另请注意,您可能应该查看准备好的语句以防止 sql 注入(inject)。您已经在使用 mysqli_,所以不妨利用它。

关于php - 使用隐藏字段和复选框将值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52576879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com