Php 将多个复选框添加到一个数据库中

Php 将多个复选框添加到一个数据库中,php,mysql,checkbox,mysqli,Php,Mysql,Checkbox,Mysqli,首先,我已经了解了与此相关的stackoverflow的其他问题,但我仍然不明白如何做,这就是为什么我要问这个问题,所以请不要因为我问了重复的问题而否定我 我正在尝试为我的网站链接一位家长及其子女。家长首先添加孩子的名字,然后创建关于孩子的新闻。这一切都很好,但我正在努力完成一部分,用户在该部分中勾选了哪些孩子参与了该新闻项目,然后将这些孩子的名字存储在我的数据库中 目前,代码仅输入表单中最后一个勾选的子项的childID。我需要一个链接表吗 迄今为止的代码: <?php $con=my

首先,我已经了解了与此相关的stackoverflow的其他问题,但我仍然不明白如何做,这就是为什么我要问这个问题,所以请不要因为我问了重复的问题而否定我

我正在尝试为我的网站链接一位家长及其子女。家长首先添加孩子的名字,然后创建关于孩子的新闻。这一切都很好,但我正在努力完成一部分,用户在该部分中勾选了哪些孩子参与了该新闻项目,然后将这些孩子的名字存储在我的数据库中

目前,代码仅输入表单中最后一个勾选的子项的childID。我需要一个链接表吗

迄今为止的代码:

<?php

$con=mysqli_connect("localhost","***","***","****");
if (isset($_POST['NewsDate'])&&isset($_POST['NewsDescription'])&&isset($_POST['Children'])){

$NewsDate= $_POST['NewsDate'];
$NewsDescription= $_POST['NewsDescription'];
$Children = $_POST['Children'];

if (!empty($NewsDate)&&!empty($NewsDescription)&&!empty($Children)){

$sql="INSERT INTO News (NewsDate, NewsDescription, Children, AccountID)
 VALUES('$NewsDate','$NewsDescription','$Children','".$_SESSION['user_id']."')";

 mysqli_query($con, $sql);

 /* commit transaction */
if (!mysqli_commit($con)) {
    print("Transaction commit failed\n");
    exit();
}
} else {
       echo'All fields are required';
      }
}
/* close connection */

mysqli_close($con);
?>

<form action="addnews.php" method="post">
  <p>News Date:       <br/>  <input type="text" name="NewsDate" id="datepicker"/></p>
  <p>News Description (max 255 characters):<br><textarea name="NewsDescription" rows="6" cols="50" maxlength="255"></textarea></p> 
  <p>Children Involved: <br> 

  <?php

$con=mysqli_connect("localhost","pytsuemg_brodie","brodie","pytsuemg_brodie");
$result = mysqli_query($con,"SELECT * FROM Child WHERE `AccountID`='".$_SESSION['user_id']."'");

while($row = mysqli_fetch_array($result))
   {

    echo $row['Firstname'] . " " . $row['Surname']; ?>
    <input type="checkbox" name="Children" value=" <? echo $row['ChildID']; ?>" />
    <?
}

?>
 </p>

新闻日期:

新闻描述(最多255个字符):

涉及的儿童:

你很容易受到伤害。由于您尚未显示您的表单或
$\u POST['Children']
中的内容,我们无法真正帮助您。表单包含在代码底部OK。您的复选框名称不正确。您所有的复选框都将具有相同的名称,这意味着最后一个选中的复选框的值将显示在$\u POST中。您需要使用php的数组表示法,
name=“Children[]”
让php创建一个值数组。然后您必须修改查询以处理该数组。好的,谢谢。我将如何更改查询以适应数组。我以前从未在PHP中使用过数组,所以这对我来说是全新的。您可以从规范化db表开始,并将子表信息放在单独的表中。您不希望在单个字段中以csv格式存储子ID。然后只需在$_POST['Children']上循环并将每个值插入到新的子表中。