作爲PHP和MySQL的新手,我已經閱讀了很多閱讀這裏的內容。 This post是關於我能找到的與我的問題相關的最接近的問題。我從解決方案中借用了一些,但它只能讓我感到滿意。插入數組檢查複選框
我使用SELECT
語句的表格數據填充表格,當前有15行。結果中的每一行都有一個複選框和相應的數據。表格中還有一個textarea。
我需要將textarea中的文本輸入以及與該複選框關聯的Case_No
和Client_No
插入到不同的表格中......只有在複選框被選中的情況下。每行只有文本相同。 INSERT
中沒有任何未勾選的複選框應該包含在內。
我意識到答案可能是某種循環,但我沒有太多的經驗,從循環插入,只顯示來自循環的數據。
這裏是我的形式:
<form method="post" name="group_note" action="group_test.php?Counselor=<?php echo $_GET['Counselor'];?>"/>
<table border="1" width="650" cellpadding="5" cellspacing="0" bordercolor="#999999">
<tr><th>Group Note</th></tr>
<tr><td><textarea name="Note" rows="10" cols="115"></textarea></td></tr>
<tr><th align="left">Select clients below to receive this group note <input type="submit" value="Add Group Note"></th></tr>
</table>
<table border="1" cellpadding="5" cellspacing="0" bordercolor="#999999">
<thead>
<tr>
<th bgcolor="#009999">Select</th>
<th bgcolor="#009999">Name</th>
<th bgcolor="#009999">Case No.</th>
<th bgcolor="#009999">Client No.</th>
</tr>
</thead>
<tbody>
<?php foreach ($dbh -> query($sql) as $row) { ?>
<tr>
<td><input type="checkbox" name="groupselect[]" value="<?php echo $row['Case_No'];?>" /></td>
<td><?php echo $row['FirstName']. " " . $row['LastName']; ?></td>
<td><?php echo $row['Case_No']; ?></td>
<td><?php echo $row['Client_No']; ?><input type="hidden" name="Client_No" value="<?php echo $row['Client_No']; ?>"/></td>
<?php } ?>
</tbody>
</table>
<input type="hidden" name="MM_insert" value="group_note">
</form>
而INSERT語句:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "group_note")) {
try
{
$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_database; charset=utf8", $mysql_username, $mysql_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insertGroup = array();
foreach ($_POST['groupselect'] as $i => $value) {
$GroupNote_CaseNo=$_POST['groupselect'][$i];
$GroupNote_ClientID=$_POST['Client_No'][$i];
$GroupNote=$_POST['Note'];
$insertGroup[]="(".$GroupNote_CaseNo.", ".$GroupNote_ClientID.", ".$GroupNote.")";
$Note = "INSERT INTO group_note GroupNote_CaseNo, GroupNote_ClientID, GroupNote VALUES ". implode(", ", $insertGroup). "GroupNote_CaseNo=VALUES(GroupNote_CaseNo), GroupNote_ClientID= VALUES(GroupNote_ClientID), GroupNote=VALUES(GroupNote)";
$stmt->execute();
$stmt->closeCursor();
}
}
catch (Exception $e)
{
$message = 'Something not working right!!';
}
}
當我選擇兩個或三個複選框,並插入一些文本,在提交我從var_dump($_POST['groupselect'])
array(3) { [0]=> string(22) "(1518-R, 4, This note)" [1]=> string(22)
"(1534-R, 3, This note)" [2]=> string(22) "(4062-R, 3, This note)" }
ClientNo
只顯示一個數字,他們是三位數字。如果我刪除[$ i]以下$GroupNote_ClientID=$_POST['Client_No']
,我會得到所有三位數,但只能從選擇的第一個複選框行:
array(3) { [0]=> string(22) "(1518-R, 4, This note)" [1]=> string(22)
"(1534-R, 3, This note)" [2]=> string(22) "(4062-R, 3, This note)" }
在任何情況下,沒有什麼是越來越插入表中。根據變量的語法,PHP錯誤日誌顯示「Undefined variable:insertGroup」和/或「Undefined variable:insertGroup」。
另外,我知道$_POST
變量的危險。我的數據庫僅供內部使用。沒有外部訪問。
如果您對MySQL的[INSERT](http://dev.mysql.com/doc/refman/5.7/en/insert.html)語法感興趣,並且實際上打擾您檢查您的查詢調用是否成功,你會一直關於你的sql語法錯誤。但是,相反,你選擇了「沒有任何事會出錯」編程學校,現在你正在爲此而苦惱。從來沒有** EVER **在處理外部資源時承擔成功。總是假設失敗,檢查失敗,並將成功視爲令人驚喜的事情。 –