从一个表单插入多个mysql

时间:2016-08-16 17:54:10

标签: php html mysql

我希望能够追踪每天服用的处方药。我不确定我是否正在尝试这样做是正确的策略,因为我只是在学习。我目前使用的策略是使用一个表按日期跟踪每个规定的项目,并使用外键在第二个表中的规定项目详细信息。

我当前的问题是,有可能对某个表单上的每个规定项目进行分组以收集所获取的数量,然后将每个项目插入到mysql中?

这是我到目前为止所拥有的。这适用于一个项目,但我希望每个日期有多个项目。是否可以在页面上创建多组输入以创建多个插入?也许我的策略是错的。这是可能的还是必要的另一种策略?

<form method="post" action="db_insert.php">
    <?php
        $date = "2016-15-16";
    ?>
    <?php echo "Date " . $date; ?>
    <input type="hidden" name="prescribedid" value="1"><br>
    Prescribed #1 Amount: 200 <input type="checkbox" name="taken_amount" value="200">
    Prescribed #1 Units: mg <input type="checkbox" name="units" value="mg">
    Prescribed #1 Frequency: daily <input type="checkbox" name="frequency" value="1">
    <input type="hidden" name="prescribedid" value="2"><br>
    Prescribed #2 Amount: 200 <input type="checkbox" name="taken_amount" value="200">
    Prescribed #2 Units: mg <input type="checkbox" name="units" value="mg">
    Prescribed #2 Frequency: daily <input type="checkbox" name="frequency" value="1"><br>
    <input type="submit" name="Submit"> 
    </form>

db_insert.php

<?php
$date = "2016-08-15";
$date = date('Y-m-d',strtotime($date));

echo $date . "<br>";

$prescribedid = $_POST["prescribedid"];
$taken_amount = $_POST["taken_amount"];
$units        = $_POST["units"];
$frequency    = $_POST["frequency"];

// 1st Insert
$query[] = "INSERT INTO `tracked_db` (`takenid`, `date`, `prescribedid`, `taken_amount`, `taken_units`, `frequency`)";
$query .= " VALUES (NULL, '{$date}', '${prescribedid}', '{$taken_amount}', '{$units}', '{$frequency}')";

// 2nd insert
$query[] = "INSERT INTO `tracked_db` (`takenid`, `date`, `prescribedid`, `taken_amount`, `taken_units`, `frequency`)";
$query .= " VALUES (NULL, '{$date}', '${prescribedid}', '{$taken_amount}', '{$units}', '{$frequency}')";

$result = mysqli_query($connection, $query);
?>

预先插入查询。

2 个答案:

答案 0 :(得分:0)

如果您要提交具有相同名称的多个输入,则必须使用inputs指定[]的名称。 例如:

<input type="checkbox" name="taken_amount[]" value="200">

在服务器端,它们将被接收或视为数组。

例如:此处$taken_amount = $_POST["taken_amount"]; $taken_amount是一个数组,其中包含名称为inputs的所有taken_amount的值。然后,您可以遍历此数组以检索值。

在您的情况下,遍历任何参数并追加/连接$query,以便可以一次插入所有行。

例如:

$query='';
for($i=0;$i<count($taken_amount);$i++){
    $query .= "INSERT INTO `tracked_db` (`takenid`, `date`, `prescribedid`,   `taken_amount`, `taken_units`, `frequency`)
              " VALUES(NULL, '{$date}', '{$prescribedid[$i]}', '{$taken_amount[$i]}', '{$units[$i]}', '{$frequency[$i]}')";
}

答案 1 :(得分:0)

那些隐藏的输入是无用的。您需要单独指定表单字段,而不是尝试将它们分组到隐藏字段下。从这里开始:

<form method="post" action="db_insert.php">
<?php
    $date = "2016-15-16";
?>
<?php echo "Date " . $date; ?>
   <br>
    Prescribed #1 Amount: 200 <input type="checkbox" name="p1taken_amount" value="200">
Prescribed #1 Units: mg <input type="checkbox" name="p1units" value="mg">
Prescribed #1 Frequency: daily <input type="checkbox" name="p1frequency" value="1">
 <br>
Prescribed #2 Amount: 200 <input type="checkbox" name="p2taken_amount" value="200">
Prescribed #2 Units: mg <input type="checkbox" name="p2units" value="mg">
Prescribed #2 Frequency: daily <input type="checkbox" name="p2frequency" value="1"><br>
<input type="submit" name="Submit"> 
</form>