Используйте HTML, как показано ниже:
<strong>List Number 1</strong>
<ul>
<li><label><input type="checkbox" name="checked[1][]" value="1">Value 1</label></li>
<li><label><input type="checkbox" name="checked[1][]" value="2">Value 2</label></li>
<li><label><input type="checkbox" name="checked[1][]" value="3">Value 3</label></li>
<li><label><input type="checkbox" name="checked[1][]" value="4">Value 4</label></li>
<li><label><input type="checkbox" name="checked[1][]" value="5">Value 5</label></li>
</ul>
<strong>List Number 2</strong>
<ul>
<li><label><input type="checkbox" name="checked[2][]" value="1">Value 1</label></li>
<li><label><input type="checkbox" name="checked[2][]" value="2">Value 2</label></li>
<li><label><input type="checkbox" name="checked[2][]" value="3">Value 3</label></li>
<li><label><input type="checkbox" name="checked[2][]" value="4">Value 4</label></li>
<li><label><input type="checkbox" name="checked[2][]" value="5">Value 5</label></li>
</ul>
Где параметр name
имеет формат checked[X][]
, где "X" - это идентификатор списка.
При отправке, со значениями, указанными в вашем вопросе, вы получите:
array(1) {
[1]=>
array(3) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
[2]=>
string(1) "5"
}
}
Итак, чтобы создать массив, подобный тому, который вы упомянули в ОП:
$sqlValues = array();
foreach( $_POST['checked'] as $list_id => $values ){
foreach( $values as $k => $v ){
$sqlValues[] = ( $k+1 ).' , '.(int) $list_id.' , ' .(int) $v;
}
}
$sqlCmd = 'INSERT INTO `yourTable` ( `entry_id` , `list_id` , `item_id` )
VALUES ( '.implode( ' ) , ( ' , $sqlValues ).' )';