2017-04-17 15 views
0

私は、複数のレコードの削除を可能にするチェックボックスとすべての動作を許可するページを持っています。フォルダからレコードに関連付けられたイメージを削除します。

しかし、各レコードも削除する必要がフォルダに保存され、それに関連するイメージを持っているかもしれませんが、私はstackoverflowのとGoogleを検索したにもかかわらず、これを達成するためにどのようには考えています。

は、どのように私は、MySQLデータベースとフォルダからそれに関連付けられた画像(複数可)からレコードを削除しますか?

私がこれまで持っていることは次のとおりです。

レコードを削除するコード:

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)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

+0

具体的にので、(http://stackoverflow.com/questions/5611963/can-multiple-different-html-elements-have-the-same-id-if-theyre-different-eleme)[IDさんは一意である必要があります]これらの要素と対話しようとすると[JavaScript](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)とCSSで問題が発生します。 –

+0

あなたの問題は何も解決しないでください。あなたはファイルを持っている - それを削除して行く!私の想いをかき立てるために、PHPはファイルシステムパッケージを、最初から、何年もの間、事実上組み込まれています。 @AlexHowansky。 –

答えて

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"); 
    } 
} 

貢献したすべての人に感謝します。

これは他の人に役立つことを望みます。

関連する問題