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
Если вы измените имя вашего флажка с «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"}
}
В приведенном выше примере флажки для идентификаторов 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/
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...
}
Как мне это сделать?
Если я сделаю это, как Фред-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"}
}
В приведенном выше примере флажки для идентификаторов 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/