如何将复选框数组中的数据保存到数据库中
How do I save data from a checkbox array into database
function check_uncheck(truefalse) {
var boxes = document.forms[0].chkboxarray.length;
var form = document.getElementById('checkForm');
for (var i = 0; i < boxes; i++) {
if (truefalse) {
form.chkboxarray[i].checked = true;
} else {
form.chkboxarray[i].checked = false;
}
}
}
<form name="checkForm" id="checkForm" method="post" action="checkboxes1.php">
<input type="checkbox" name="chkboxarray" value="1" /><br />
<input type="checkbox" name="chkboxarray" value="2" /><br />
<input type="button" name="CheckAll" value="Check All Boxes" onclick="check_uncheck(true)" />
<input type="button" name="UncheckAll" value="Uncheck All Boxes" onclick="check_uncheck(false)" />
<input type="submit" value="Save">
</form>
The snippet shows how it works without connection to a database
我正在尝试将从清单发送到数据库的数据保存,但我卡住了。我正在考虑使用foreach,但我不知道该放什么。
我把它说成:
foreach($_POST['id'] as $add){
insert into database...
}
我该怎么做?
如果我按照 Fred-ii 和 xjstratedgebx 建议我更改name="chkboxarray" to name="chkboxarray[]"
的地方执行此操作,那么 javascript 代码将停止工作。
<?php
include '../conec.php';
mysql_select_db("test",$conec)or die('Database does not exist.') or die(mysql_error());
$sql = mysql_query("SELECT * FROM user WHERE state='Not Signed Up'");
?>
<form name="checkForm" id="checkForm" method="post" action="checkboxes1.php">
<?php
while($row = mysql_fetch_array($sql)){
$id = $row['id'];
$name = $row['name'];
$lName= $row['lName'];
$concate = $name.' '.$lName;
echo '<input type="checkbox" name="chkboxarray" value="'.$id.'" />'.$concate.'<br />';
}
?>
<!--<input type="checkbox" name="chkboxarray" value="1" /><br />
<input type="checkbox" name="chkboxarray" value="2" /><br />-->
<input type="button" name="CheckAll" value="Check All Boxes" onclick="check_uncheck(true)" />
<input type="button" name="UncheckAll" value="Uncheck All Boxes" onclick="check_uncheck(false)" />
<input type="submit" value="Save">
</form>
<script type="application/javascript">
function check_uncheck(truefalse){
var boxes = document.forms[0].chkboxarray.length;
var form = document.getElementById('checkForm');
for(var i=0;i < boxes;i++){
if (truefalse) {
form.chkboxarray[i].checked=true;
} else {
form.chkboxarray[i].checked=false;
}
}
}
</script>
如果您将复选框的名称从"chkboxarray"更改为"chkboxarray[]",则提交表单时选中的任何框都将在"chkboxarray"键下将其值作为数组传递给服务器。
基本上,更改此行:
echo '<input type="checkbox" name="chkboxarray" value="'.$id.'" />'.$concate.'<br />';
自:
echo '<input type="checkbox" name="chkboxarray[]" value="'.$id.'" />'.$concate.'<br />';
因此,如果您var_dump $_POST
超级全局,您应该看到类似以下内容:
array(1) {
[chkboxarray]=>
array(2) {
[0]=>
string(1) "3"
[1]=>
string(1) "4"
}
}
在上面的示例中,id的3和4的复选框被选中,因此它们被发送到服务器。
拥有该数组后,将其插入数据库在很大程度上取决于您要完成的任务和数据库的架构。
希望有帮助。
此外,公平地说,这正是@Fred在他的评论中的意思。
编辑 1
为了使 javascript 能够更改输入名称,您需要将 javascript 中引用输入名称的所有位置更新为新名称 (chkboxarray[])。
生成的代码应如下所示:
<script type="application/javascript">
function check_uncheck(truefalse) {
var boxes = document.forms[0]["chkboxarray[]"].length;
var form = document.getElementById('checkForm');
for (var i = 0; i < boxes; i++) {
if (truefalse) {
form["chkboxarray[]"][i].checked = true;
} else {
form["chkboxarray[]"][i].checked = false;
}
}
}
</script>
我创建了一个小提琴来显示它适用于选中/取消选中所有框:https://jsfiddle.net/solvomedia/3Ln468u3/
相关文章:
- 如何使用 Angular JS 将数据保存在数据库中
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 将 JSON 数据保存到服务器上
- 可以'编辑后不会将数据保存在数据库中,但网格显示更改
- Javascript-将谷歌趋势url中的数据保存到PHP数组中
- 如何使用JavaScript将用户生成的数据保存到Firebase中的用户
- 将表数据保存在本地存储中
- 我应该把维基百科的数据保存到我的数据库中吗
- 使用PHP将表格数据保存为CSV格式
- 如何在网站上实现一个按钮,允许用户将生成的数组数据保存为ASCII文件
- imacros JavaScript 将数据保存到文件中,在 Firefox 中给出错误
- 如何将数据保存到本地谷歌表格
- 将表数据保存到 HTML5 LocalStorage
- 如何将 JSON 数据保存到文件
- 将二进制数据保存在浏览器中,而不会在下载时进行 UTF8 编码
- 将输入数据保存到全局变量
- 将数据保存到Syncano Angular应用程序
- 使用角度将结构化数据保存在火库中