2016-08-16 119 views
1

我希望能夠跟蹤每天服用的處方藥物。我不知道我是如何努力做到這一點是正確的策略,因爲我只是在學習。我目前使用的策略是使用一個表格按日期跟蹤每個指定項目,並在第二個表格中使用外鍵指定項目詳細信息。從一個表格插入多個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); 
?> 

的foreach查詢插入。

+1

'$ query [] ='表示它是一個數組,但是'$ query。='表示它是一個字符串。 – Barmar

+0

難道你不說___這隻適用於一個item_如果它確實如此,那麼這不是你實際運行的代碼。發佈真實代碼 – RiggsFolly

+0

你是對的。我試圖讓我的問題更清晰並修改我的代碼。第一個$查詢不是一個數組,應該只是$查詢。感謝您的答覆。 –

回答

0

如果你想提交多個輸入同名,那麼你必須提供inputs的名稱[]。 例如:

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

而在服務器側,它們將被接收或作爲陣列處理。例如:

例如:這裏$taken_amount = $_POST["taken_amount"];$taken_amount是一個數組,其中包含名稱爲taken_amount的所有inputs的值。然後你可以迭代這個數組來檢索這個值。

在你的情況下迭代你的任何參數並追加/連接$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

您需要詳細說明如何在PHP腳本中使用它。 – Barmar

+0

你可能想檢查一個'foreach'或'for'或兩者的語法,然後得到一個DV – RiggsFolly

+0

謝謝指出。那種習慣與'foreach' :) – jonju

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>