Php 将要存储与父复选框相关的子复选框的多个值,数据只存储一次
当我在数据库中多次存储服务和活动,然后存储服务和活动值时,我也使用内爆而不是foreach,但是存储了第一次服务和第一次活动,下图描述了我确切想要的内容Php 将要存储与父复选框相关的子复选框的多个值,数据只存储一次,php,checkbox,Php,Checkbox,当我在数据库中多次存储服务和活动,然后存储服务和活动值时,我也使用内爆而不是foreach,但是存储了第一次服务和第一次活动,下图描述了我确切想要的内容 <form method='post' id='userform' action='savecheckbox.php'> <tr> <td>Trouble Type</td> <br> <td> <input type='checkbox' name='servic
<form method='post' id='userform' action='savecheckbox.php'> <tr>
<td>Trouble Type</td>
<br>
<td>
<input type='checkbox' name='servicevar[]' value='1'>tds<br> <br>
<input type='checkbox' name='activityvar[]' value='1'>Return<br>
<input type='checkbox' name='activityvar[]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='2'>Gst<br> <br>
<td>
<input type='checkbox' name='activityvar[]' value='1'>Return<br>
<input type='checkbox' name='activityvar[]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='3'>vat<br> <br>
<td>
<input type='checkbox' name='activityvar[]' value='1'>Return<br>
<input type='checkbox' name='activityvar[]' value='2'>Filling<br>
<br>
</td> </tr> </table> <input type='submit' name="submit" class='buttons'>
故障类型
tds
返回
填充
商品及服务税
返回
填充
增值税
返回
填充
此代码应该适合您
你的HTML代码
<form method='post' id='userform' action='savecheckbox.php'> <tr>
<td>Trouble Type</td>
<br>
<td>
<input type='checkbox' name='servicevar[]' value='1'>tds<br> <br>
<input type='checkbox' name='activityvar[1][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[1][]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='2'>Gst<br> <br>
<td>
<input type='checkbox' name='activityvar[2][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[2][]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='3'>vat<br> <br>
<td>
<input type='checkbox' name='activityvar[3][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[3][]' value='2'>Filling<br>
<br>
</td> </tr> </table> <input type='submit' name="submit" class='buttons'>
故障类型
tds
返回
填充
商品及服务税
返回
填充
增值税
返回
填充
savecheckbox.php
<?php
if(isset($_POST['submit']))
{
$activity = $_POST['activityvar'];
$service = $_POST['servicevar'];
foreach ($service as $key=>$servicevalue)
{
foreach($servicevalue as $activityvalue)
{
$query = "insert into serviceacitivitymap(service_id,activity_id)values('$key','$activityvalue')";
$insert_row = $conn->query($query) or die ($conn->error.__LINE__);
}
}
}
您必须以输入的名称使用关联数组,如:
<form method='post' id='userform'>
<tr>
<td>Trouble Type</td>
<br>
<td>
<input type='checkbox' name='servicevar[]' value='1'>tds<br> <br>
<input type='checkbox' name='activityvar[1][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[1][]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='2'>Gst<br> <br>
<td>
<input type='checkbox' name='activityvar[2][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[2][]' value='2'>Filling<br>
<br>
<input type='checkbox' name='servicevar[]' value='3'>vat<br> <br>
<td>
<input type='checkbox' name='activityvar[3][]' value='1'>Return<br>
<input type='checkbox' name='activityvar[3][]' value='2'>Filling<br>
<br>
</td>
</tr>
</table>
<input type='submit' name="submit" class='buttons'>
故障类型
tds
返回
填充
商品及服务税
返回
填充
增值税
返回
填充
然后,在php代码中,您可以像这样循环使用它们:
<?php
if(isset($_POST['submit']))
{
$services = $_POST['servicevar'];
$activities = $_POST['activityvar'];
foreach ($services as $service)
{
foreach($activities[$service] as $activity)
{
$query = "insert into serviceacitivitymap(service_id,activity_id) values('$service','$activity')";
$insert_row = $conn->query($query) or die ($conn->error.__LINE__);
}
}
}
?>
HTML:-
故障类型
tds
返回
填充
商品及服务税
返回
填充
增值税
返回
填充
PHP:-您正在重新设计foreach中的$key
,将活动的$key
定义为$key2
当我在定义“$query”的行之后将$key重命名为$key2Try“echo$query”并向我们显示输出时,问题再次相同。插入ServiceActivityMap(服务id,活动id)值('1','1'))插入ServiceActivityMap(服务id,活动id)值('1','2')插入ServiceActivityMap(服务id,活动id)值('1','1')插入ServiceActivityMap(服务id,活动id)值('1','2')插入ServiceActivityMap(服务id,活动id)值('1','1')插入ServiceActivityMap(服务id,活动id)值('1','2')服务2和服务3也一样,你的HTML结构比这里发布的要大还是只有3个服务/6个活动?你对发布的HTML有完全的控制权吗?嗨,当我选中所有复选框时,它可以工作,但是当我选中第一个服务中的1,2活动第二个服务中的1活动时,它会像1->1,1->2,2->1,2->2一样存储。我有问题,我有更新更新的代码警告:为foreach()提供的参数无效@Rutu我们开始了,这是您正在搜索的解决方案,您可以选中/取消选中您想要的内容,然后只将选中的数据存储在数据库中。先生,代码工作正常。我可以问您一个问题吗?谢谢,如果checkbox的服务和活动值来自数据库,那么您想选中/取消选中t是什么意思默认情况下根据db值进行hem?是,如果服务和活动的值是动态的,那么html输入标记中的服务和活动的名称是什么
<?php
if(isset($_POST['submit']))
{
$services = $_POST['servicevar'];
$activities = $_POST['activityvar'];
foreach ($services as $service)
{
foreach($activities[$service] as $activity)
{
$query = "insert into serviceacitivitymap(service_id,activity_id) values('$service','$activity')";
$insert_row = $conn->query($query) or die ($conn->error.__LINE__);
}
}
}
?>
HTML:-<form method='post' id='userform' action='sh.php'> <tr>
<td>Trouble Type</td>
<br>
<td>
<input type='checkbox' name="arr[1][service]" value='1'>tds<br> <br>
<input type='checkbox' name="arr[1][activity][]" value='1'>Return<br>
<input type='checkbox' name="arr[1][activity][]" value='2'>Filling<br>
<br>
<input type='checkbox' name="arr[2][service]" value='2'>Gst<br> <br>
<td>
<input type='checkbox' name="arr[2][activity][]" value='1'>Return<br>
<input type='checkbox' name="arr[2][activity][]" value='2'>Filling<br>
<br>
<input type='checkbox' name="arr[3][service]" value='3'>vat<br> <br>
<td>
<input type='checkbox' name="arr[3][activity][]" value='1'>Return<br>
<input type='checkbox' name="arr[3][activity][]" value='2'>Filling<br>
<br>
</td> </tr> </table> <input type='submit' name="submit" class='buttons'>
PHP:-<?php
if(isset($_POST['submit']))
{
foreach ($_POST['arr'] as $input) {
foreach ($input['activity'] as $activity) {
$servicevalue = $input['service'];
$query = "insert into serviceacitivitymap(service_id,activity_id)
values('$servicevalue','$activity')";
$insert_row=$conn->query($query) or die ($conn->error.__LINE__);
echo $query;
echo "<br>";
}
}
}