台灣最大程式設計社群網站
線上人數
1266
 
會員總數:243152
討論主題:187974
歡迎您免費加入會員
討論區列表 >> PHP >> 勾選多筆資料 sql 語法插入資料庫的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
勾選多筆資料 sql 語法插入資料庫的問題
價值 : 100 QP  點閱數:223 回應數:4

樓主

阿南
門外漢
0 37
566 50
發送站內信

各位大大
想在此請教 勾選多筆資料 一次插入資料庫的問題

目前遇到的狀況是 
需要勾選checkbox選項(而每一個checkbox 目前也都有傳值進去)
但卡在SQL語法 不知要如何下再篩選"指定的checkbox" 也就是有勾選的選項 才能寫進資料庫
現在情況只有 假設勾了6筆 那也將正確 插入6筆資料而已


我有看到一個範例 它是勾選多筆刪除
於是它的寫法 改成

$delid = $_POST["delcheck"][$i];
$query_del = "DELETE FROM albumphoto WHERE ap_id={$_POST["ap_id"][$delid]}";

但現在邏輯一樣 卻居然卡在 inser時

我不太清楚 要將寫好的
$insercheck = $_POST["insercheck"][$i];

要如何 插入下面的sql語法中結合
也就是 篩選有勾選的選項 進入資料庫

再麻煩大家 不知是否可給我一些意見呢?

----------------------

if(isset($_POST["action"])&&($_POST["action"]=="oksend")){
for ($i=0; $i<count($_POST["insercheck"]); $i++) {
$insercheck = $_POST["insercheck"][$i];
$query_insert = "INSERT INTO `member-6ok-postcard` (`save-username`,`save-pic`,`save-title`,`save-alley`,`save-road`,`save-area`,`save-postcardid`,`save-samekind`,`save-time`) VALUES (?,?,?,?,?,?,?,?,NOW())";
$stmt = $db_link->prepare($query_insert);
$stmt->bind_param("ssssssii",
GetSQLValueString($_POST["save-username"][$i], "string"),
GetSQLValueString($_POST["save-pic"][$i], "string"),
GetSQLValueString($_POST["save-title"][$i], "string"),
GetSQLValueString($_POST["save-alley"][$i], "string"),
GetSQLValueString($_POST["save-road"][$i], "string"),
GetSQLValueString($_POST["save-area"][$i], "string"),
GetSQLValueString($_POST["save-postcardid"][$i], "int"),
GetSQLValueString($_POST["save-samekind"][$i], "int"));
$stmt->execute();
$stmt->close();
}

}
----------------------
html的部份開始

<form method="post" action="">

<?php $checkid=0;$samekind=1;
while($row_RecAdmin=$RecAdmin->fetch_assoc()){ ?>

<div class="4u" style="position:relative;">

<input type="checkbox" id="insercheck[]" name="insercheck[]" value="<?php echo $checkid;$checkid++?>">

<span class="image fit"><img src="upload/<?php echo $row_RecAdmin["save-area"];?>/<?php echo $row_RecAdmin["save-pic"];?>" alt="" /></span>
</div>
<input name="save-username[]" type="hidden" id="save-username[]" value="<?php echo $row_RecAdmin["save-username"];?>"/>
<input name="save-pic[]" type="hidden" id="save-pic[]" value="<?php echo $row_RecAdmin["save-pic"];?>"/>
<input name="save-title[]" type="hidden" id="save-title[]" value="<?php echo $row_RecAdmin["save-title"];?>"/>
<input name="save-alley[]" type="hidden" id="save-alley[]" value="<?php echo $row_RecAdmin["save-alley"];?>"/>
<input name="save-road[]" type="hidden" id="save-road[]" value="<?php echo $row_RecAdmin["save-road"];?>" />
<input name="save-area[]" type="hidden" id="save-area[]" value="<?php echo $row_RecAdmin["save-area"];?>" />
<input name="save-postcardid[]" type="hidden" id="save-postcardid[]" value="<?php echo $row_RecAdmin["save-postcardid"];?>" />
<input name="save-samekind[]" type="hidden" id="save-samekind[]" value="<?php echo $samekind ;?>" />

<?php }?>

<input name="action" type="hidden" id="action" value="oksend" >
</form>


搜尋相關Tags的文章: [ php ] ,
本篇文章發表於2018-05-17 20:49
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

迷路
捐贈 VP 給 迷路 檢舉此回應
第一,請愛用程式標籤,你這樣全切齊的程式很難看,會大幅降低細看的意願,更別說回答了
第二,請詳述問題,是執行時發生錯誤?那錯誤訊息是什麼?還是執行了沒反應?或是執行了結果不對?
最後,按照你的程式,我推測是新增的資料內容不對,原因很簡單
checkbox是只有勾選時才會回傳資料的
這在陣列化資料傳遞時是最容易出錯的
例如說有十筆資料,勾選第二、五、九,三個checkbox
PHP接收到的是陣列大小為三的陣列,而非是大小為十的陣列
這樣明白你的問題了嗎?
修改的方式,既然checkbox的值($checkid)實際上並沒有用到
將值改成$i來記錄是第幾筆資料
新增時將$_POST["save-username"][$i]改成$_POST["save-username"][$_POST["insercheck"][$i]]
這樣應該就行了
本篇文章回覆於2018-05-18 09:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

淺水員
檢舉此回應
To:迷路
checkbox 如果用 name="xxx[]" 的方式傳給 PHP
那麼 PHP 收到的只有連號的陣列
是沒辦法判斷使用者勾選的是哪一個喔
所以你說的方法應該是無法跑出預期的結果

To:阿南
1. 雖然對目前程式執行沒影響,但是你的 id 重複了。其實瀏覽器並沒有實作那種以陣列為 id 或是 name 的。不過 name 可以重複,加上 php 可以解析,所以 name 用 xxx[] 沒問題。
2. 我看到滿多 hidden 欄位,這是不希望使用者修改的內容,但是後端寫入時卻取這些 hidden 欄位的內容。我會建議不需要改動的欄位不要抓前端傳來的值,不然有心的使用者用瀏覽器的開發工具修改一下就可以讓你的網站出錯了。(例如繞過權限之類的)
3. 你要的東西應該還是要配合 javascript 來實現。我的話會不使用 form 傳送,而是從 form 的內容形成 json 字串透過 AJAX 送給後端,php 只要用 json_decode 就可以直接抓到要的值了。

本篇文章回覆於2018-05-18 14:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
我說的可能有些難懂
下面附上簡易的範例,這樣應該會比較好理解


To:淺水員
你說的前兩點很重要,但是第三點我認為不需要急著教新手,讓新手先學會基本
這種進階的做法等基礎打穩了再來學會比較好
實際上樓主的程式看上去能改的地方很多,但我覺得那些應該放在最基本的功能能做出之後
需要更進一步的時候再點出比較好,不然太多東西一口氣塞給新手
只會讓新手混亂而已
本篇文章回覆於2018-05-21 09:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

淺水員
檢舉此回應
To 迷路:抱歉,前面看太快看錯你的意思。
本篇文章回覆於2018-05-21 13:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.