2017-04-17 79 views
0

我有一個頁面允許使用複選框進行多個記錄刪除,並且所有工作都正常。刪除與文件夾中記錄相關的圖像

然而,每條記錄可以有存儲在文件夾,這也將需要刪除它關聯的圖像,但我不知道如何實現這一目標,即使我已經搜查#1和谷歌。

如何刪除從MySQL數據庫與它從文件夾關聯的結果和圖像(S)?

我至今是:

是刪除記錄的代碼:

if (isset($_POST[ 'chk_id' ])) { 
    $arr = $_POST[ 'chk_id' ]; 
    foreach ($arr as $id) { 
     @mysqli_query($KCC, "DELETE FROM pageContent WHERE contentID = " . $id); 
    } 
    $msg = "Page(s) Successfully Deleted!"; 
    header("Location: delete-familyservices.php?msg=$msg"); 
} 

是選擇記錄刪除形式:

<form name="deleteRecord" id="deleteRecord" method="post" action="delete-familyservices.php"> 

    <?php if (isset($_GET['msg'])) { ?> 
     <p class="alert alert-success"> 
      <?php echo $_GET['msg']; ?> 
     </p> 
    <?php } ?> 

    <table width="100%" class="table table-striped table-bordered table-responsive"> 
     <tr> 
      <th>Page Title</th> 
      <th>Page Text</th> 
      <th>Page Image</th> 
      <th>Delete</th> 
     </tr> 

     <?php do { ?> 
     <tr> 
      <td width="30%" style="vertical-align: middle"> 
       <h4 style="text-align: left"> 
        <?php echo $row_rsContent['contentTitle']; ?> 
       </h4> 
      </td> 
      <td width="45%" style="vertical-align: middle"> 
       <?php echo limit_words($row_rsContent['contentData'], 10); ?> ...</td> 
      <td align="center" style="vertical-align: middle"> 
       <?php if (($row_rsContent['contentImage']) != null) { ?> 
       <img src="../images/<?php echo $row_rsContent['contentImage']; ?>" class="img-responsive"> 
       <?php } else { ?> No Image 
       <?php } ?> 
      </td> 
      <td width="5%" align="center" style="vertical-align: middle"><input type="checkbox" name="chk_id" id="chk_id" class="checkbox" value="<?php echo $row_rsContent['contentID']; ?>"> 
      </td> 
     </tr> 
     <?php } while ($row_rsContent = mysqli_fetch_assoc($rsContent)); ?> 

    </table> 

    <p>&nbsp;</p> 

    <div class="form-group" style="text-align: center"> 
     <button type="submit" name="submit" id="submit" class="btn btn-success btn-lg butt">Delete Selected Page(s)</button> 
     <button class="btn btn-danger btn-lg butt" type="reset">Cancel Deletion(s)</button> 
    </div> 
</form> 

代碼的最後一塊,這是一個確認腳本:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#deleteRecord').submit(function (e) { 
      if (!confirm("Delete the Selected Page(s)?\nThis cannot be undone.")) { 
       e.preventDefault(); 
      } 
     }); 
    }); 
</script> 

我見過提到unlink()功能,但我不知道這是用什麼或有什麼想法,如何將其納入現有的代碼,如果它是。

+0

您的代碼容易受到[** SQL注入攻擊**](https://en.wikipedia.org/wiki/SQL_injection)的影響。你應該使用[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https://secure.php.net/ manual/en/pdo.prepared-statements.php)準備帶有綁定參數的語句,如[**這篇文章**]所述(https://stackoverflow.com/questions/60174/how-can-i-prevent-sql步噴射功能於PHP)。 –

+0

[ID必須是唯一的(http://stackoverflow.com/questions/5611963/can-multiple-different-html-elements-have-the-same-id-if-theyre-different-eleme),特別是因爲它當您嘗試與這些元素進行交互時,會在[JavaScript](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)和CSS中導致問題。 –

+0

不要明白你的問題。你有文件 - 然後去刪除它!據我的回憶,PHP從一開始就實際上已經內置了文件系統軟件包,這意味着很長一段時間。 –

回答

0

,你將不得不使用其存儲在數據庫中,你像這樣的圖像的路徑:

unlink(' the link of the images which is fetched from db'); // correct 

不要忘記檢查圖像存在file_exists() //

+0

我知道它會像'unlink('../ images/<?php echo $ row_rsContent ['contentImage'];?>')',但我不知道把它放在現有代碼中。 – MartySmartyPants

0

從其他網站得到這個以及一些試驗和錯誤。

if($_POST) { 
    $arr = isset($_POST['chk_id']) ? $_POST['chk_id'] : false; 
    if (is_array($arr)) { 
     $filter = implode(',', $arr); 
     $query = "SELECT *filename* FROM *table* WHERE *uniqueField* IN ({$filter})"; 
     $result = mysqli_query(*$con*, $query); 
     while ($row = mysqli_fetch_object($result)) { 
     $pathToImages = "*path/to/images*"; 
     { 
      unlink("{$pathToImages}/{$row->contentImage}"); 
     } 
     } 
     // DELETE CAN BE DONE IN ONE STATEMENT 
     $query = "DELETE FROM *table* WHERE *uniqueField* IN ({$filter})"; 
     mysqli_query(*$con*, $query); 
     $msg = "Page(s) Successfully Deleted!"; 
     header("Location: *your-page.php*?msg=$msg"); 
    } 
} 

感謝大家的貢獻。

希望這對他人有所幫助。

相關問題