我希望撰寫一段語法,讓網友能夠將想要刪除的檔案,透過核取方框一次勾選,然後一次刪除。
print_r( ):用來呈現陣列的一種方式。
foreach(陣列 as $value){...}:一種用來輸出陣列的方式,或者也可以寫成foreach ( 陣列 as $key => $value )。
foreach(陣列 as $value){...}:一種用來輸出陣列的方式,或者也可以寫成foreach ( 陣列 as $key => $value )。
基本概念說明
STEP 1HTML表單撰寫
我們先寫一個如下的頁面:
這段的HTML語法為:
<form method="post" name="form1" id="form1" action="delete.php"> <p>請問你平常搭什麼交通工具?</p> <p> <label> <input type="checkbox" name="checkbox[]" value="火車" id="checkbox_0" /> 火車 </label> <br /> <label> <input type="checkbox" name="checkbox[]" value="機車" id="checkbox_1" /> 機車 </label> <br /> <label> <input type="checkbox" name="checkbox[]" value="高鐵" id="checkbox_2" /> 高鐵 </label> <br /> <label> <input type="checkbox" name="checkbox[]" value="公車" id="checkbox_3" /> 公車 </label> </p> <p> <input type="submit" name="button" id="button" value="送出" /> </p> </form>
這裡有兩個可以留意的地方:
1.這個頁面的資料將會被傳到delete.php去做確認刪除的動作(action="delete.php)。
2.為了要在送出之後把這些核取方塊的值都存取成一個陣列,我們必須要做一個很重要的步驟,就是把每個INPUT中核取框name的地方加上[ ],所以每個核取框的name都會變成name = "checkbox[ ]",如果沒做這個動作的話,到時候只會收到最後一個核取框的值。
STEP 2讀取表單結果
這時候,我到delete.php這個頁面撰寫PHP語法來獲取表單內容:
<?php $check=$_POST['checkbox']; echo $check; ?>這時候會回傳「Array」的結果,意思就是check這個變數是一個陣列。
接著讓我們來看看陣列,我們可以利用print_r( )這個函數來獲取陣列的結果:
<?php $check=$_POST['checkbox']; print_r($check); ?>從下面的結果,我們可以清楚看到陣列的結構,表示網友勾選了機車和高鐵這兩個核取框
另一種輸出陣列的方法,則可以使用foreach,寫法像是這樣
<?php $check=$_POST['checkbox']; foreach($check as $value){ echo $value; } ?>這個語法的意思是,把check這個陣列的函數存取出值來($value可以取為任何名稱),每取一次就幫我echo一次變數$value的值,所以結果會像這樣子:
批次刪除核取檔案的寫法
STEP 1:批次刪除資料有了上面的基本概念我們就可以瞭解要怎麼進行批次刪除的動作了,我只要在foreach函數裡,加上 mysql_query("delete from 資料表名稱 where 欄位名稱 = $value")這樣的寫法就可以了,像是這樣:
<?php $check=$_POST['checkbox']; foreach($check as $value){ mysql_query("delete from 資料表名稱 where 欄位名稱 = $value"); } ?>這麼做的話,每次呼叫出一個被核取的值時,就執行刪除的動作。
STEP 2:批次刪除檔案
如果我們的核取方框同時包含了「檔案名稱」,我們也可以用unlink( )這個指令,把檔案刪除,像是這樣:
<?php $check=$_POST['checkbox']; foreach($check as $value){ mysql_query("delete from 資料表名稱 where 欄位名稱 = $value"); if(file_exists($value.'.jpg')){ unlink($value.'.jpg'); } } ?>我先透過file_exists(檔案名稱)這個語法,判斷檔案是不是存在(這裡指的是「機車.jpg」或「高鐵.jpg」),如果存在的話幫我刪除unlink(檔案名稱)。
可參考:[PHP]判斷檔案是否存在,並將檔案刪除
透過這樣的方法,就可以達到讀取核取方框和批次刪除的效果了。
參考資料
香腸炒魷魚:[PHP]如何抓取表單中checkbox的值?
Wibibi
0 意見:
張貼留言