从文件夹中删除与记录关联的图像

时间:2017-04-17 18:31:22

标签: php jquery mysql

我有一个页面,允许使用复选框删除多个记录,并且一切正常。

但是,每个记录可能有一个与之关联的图像存储在一个文件夹中,该文件夹也需要删除但我不知道如何实现这一点,即使我已经搜索过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()功能,但我不知道这是使用什么,或者知道如果将其合并到现有代码中,如果是的话。

2 个答案:

答案 0 :(得分:0)

您必须使用存储在您数据库中的图像路径,如下所示:

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

不要忘记检查图像是否存在file_exists() //

答案 1 :(得分: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");
    }
}

感谢所有贡献的人。

希望这对其他人有所帮助。