Как сохранить данные из массива флажков в базу данных

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

1

Решение

Если вы измените имя вашего флажка с «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/

2

Другие решения

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>
1

Если вы измените имя вашего флажка с «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/

1

active «data-shortcut =» A
самый старый «data-shortcut =» O
голосует «data-shortcut =» V
2