Php 将要存储与父复选框相关的子复选框的多个值,数据只存储一次

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

当我在数据库中多次存储服务和活动,然后存储服务和活动值时,我也使用内爆而不是foreach,但是存储了第一次服务和第一次活动,下图描述了我确切想要的内容

<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>";

      }
    }

}