2013-12-15 2 views
1

php 및 javascript로 응용 프로그램과 같은 보관 용 계정을 구축 중입니다. 한 번에 여러 파일과 폴더를 삭제하는 삭제 기능을 구축하려고합니다. 아래 코드는 모든 행을 보여줍니다. 나는 모든을 통해 몇 가지 코드 반복이 필요여러 파일/폴더에 대한 확인란이있는 삭제 기능

<a href="#" id="delete">Delete</a> 

:

<?php 
foreach ($files as $file) { 
    echo '<li class="browse-file"> 
      <div class="select-all-col"><input name="select" type="checkbox" class="select" id="'.$file.'"/></div> 
      <div class="file-name-col"><a href="my-home.php?name='.$folderName."/".$file.'" style="cursor: pointer;">'.$file.'</a></div> 
      <div class="kind-col">folder</div> 
      <div class="date-modified-col">'.date ("F d Y H:i:s.", filemtime($_SESSION['currentDir']."/".$file)).'</div> 
      <br /> 
     </li>'; 
       } 
?> 

다음 모든 검사 폴더를 삭제할 수있는 링크는 다음과 같습니다이 동적으로 서버에 저장되어있는 모든 폴더를 표시하기 위해 PHP 이루어졌다 확인란을 선택하고 서버로 보내도록 선택되었는지 확인합니다. 서버가 폴더/파일을 삭제합니다. 아무도 내가 이것을 달성하기 위해 무엇을 할 수 있는지 제안 해 주실 수 있습니까?

+0

'<입력 이름 = "선택 []"...', 당신은 PHP 끝으로 그것을 얻을 수 있습니다 배열 – bansi

답변

2

phps foreach 루프를 사용하여 확인한 파일을 반복 처리 할 수 ​​있습니다.

$path_to_folder = "folder/"; 
foreach ($_POST['select[]'] as $file) { 
    if(file_exists($path_to_folder . $file))) { 
     unlink($path_to_folder . $file); 
    } 
    elseif(is_dir($file)) { 
     rmdir($file); // or system("rm -rf " . escapeshellarg($dir)); 
    } 
} 
echo "Files deleted successfully."; 

그리고 체크 박스에서 당신이 더 나은 패스 값이 아니라 해당 ID :

여기 삭제 스크립트의 종류에 대한 예입니다. 또한 PHP가 배열로 인식하므로 입력 이름에 대괄호를 추가해야합니다.

<input name="select[]" type="checkbox" class="select" value="'.$file.'"/> 

이 문제에 대한 자세한 내용보기 : How do I recursively delete a directory and its entire contents (files + sub dirs) in PHP?

+0

좋은 설명 주셔서 감사합니다. 내가 이것을 어떻게 할 수 있는지 이해하는 것은 정말로 도움이되었다. 하지만 한 가지 더 질문이 있습니다. 어떻게 서버에 게시하려면 삭제 링크를 만들 수 있습니까? –

+0

서버로 보낼 데이터를 제어하는 ​​양식을 추가해야합니다. 그리고 그 안에 체크 박스를 추가하십시오. 그럼 당신은 제출 버튼()와 같은 제출 링크를 사용할 수 있습니다 : 'Delete selected'내 대답을 수락 잊지 마세요 :) – aksu

+0

그래, 내가 말한대로 할 수 있었다. 양식을 추가하고 다음과 같은 확인란을 포함 시켰습니다.

링크에 다음을 추가했습니다 : Delete. 시간과 인내심을 가져 주셔서 감사합니다 :) –

0

$(document).ready(function(){ 
 
$('#btn_delete').click(function(){ 
 
     var id = []; 
 
     $(':checkbox:checked').each(function(i){ 
 
     id[i] = $(this).val(); 
 
     }); 
 
     $.ajax({ 
 
     headers : {'X-CSRF-TOKEN' : $('input[name=_token]').val() }, 
 
     url:'/images/multiple', 
 
     method:'POST', 
 
     data:{id:id}, 
 
     success:function() 
 
     { 
 
     window.location.reload(); 
 
     } 
 
     }); 
 

 

 
}); 
 
});
<div class="col-lg-9 animated fadeInRight"> 
 
    <div class="row" > 
 
    <div align="left" id="btn-p"> 
 
     <div id="btn-c"> 
 
     @if($folder) 
 
      <button type="button" name="btn_delete" id="btn_delete" class="btn btn-info"><span style="color:red; font-size: 1.50em;"><i class="fa fa-trash pull-right" aria-hidden="true"></i></span></button> 
 
     @endif 
 
     </div> 
 
    </div> 
 
    <div class="col-lg-12" id="image-p"> 
 
     <div class="file" id="image-c"> 
 

 
     @foreach ($images as $image) 
 
     <div class="col-lg-3" style="min-height:350px"> 
 
      <label class="pull-left"><input type="checkbox" value="{{$image->id}}" name="checkbox[]" id="checkAll"/></label> 
 

 
      <td><a style="margin-left: 20px;" onclick="delete_img({{ $image->id }})" href ="javascript:void(0)"><span style="color:red; font-size: 1.50em;"><i class="fa fa-trash pull-right" aria-hidden="true"></i></span></td> 
 

 
       <a href="#"> 
 
       <tr> 
 
       <td><img src="/{{$image->path}}" width="100%" height="180px" width="150px" > </td> 
 
       </tr> 
 
       </a> 
 
       <form> 
 
       {{ csrf_field() }} 
 
       <input type="hidden" name="id" value="{{$image->id}}"> 
 
        <div class="form-group"> 
 
        <textarea name="message"style="background-color:skyblue; width:200px" onkeyup="test($(this).closest('form'))" onkeydown="test($(this).closest('form'))" class="message" rows="2">{{ $image->message }}</textarea> 
 
        </div> 
 
       </form> 
 
      </div> 
 
     @endforeach 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>