我希望能够追踪每天服用的处方药。我不确定我是否正在尝试这样做是正确的策略,因为我只是在学习。我目前使用的策略是使用一个表按日期跟踪每个规定的项目,并使用外键在第二个表中的规定项目详细信息。
我当前的问题是,有可能对某个表单上的每个规定项目进行分组以收集所获取的数量,然后将每个项目插入到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);
?>
预先插入查询。
答案 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>