Múltiplos Uploads com PHP, Mysql e Ajax - #14 Visualizar e Deletar
01/12/2019Na aula de hoje iremos trabalhar com a parte de visualizar e editar na nossa tabela de uploads.
Visualizando e editando
Primeiramente na nossa ClassUpload iremos adicionar os atributos data*:
<a href=''><img src='".DIRPAGE."img/button-view.png' alt='Visualizar' id='button-view' data-src='$showFiles[path]' data-fileid='$showFiles[id]'></a>
<a href=''><img src='".DIRPAGE."img/button-trash.png' alt='Excluir' id='button-trash' data-fileid='$showFiles[id]' data-filefk='$showFiles[fk_ads]'></a>
E vamos criar o método de seleção pelo id:
#Select files by id
private function selectFilesById($id)
{
$bFiles=$this->selectDB("*","files","where id=? order by id desc",array($id));
return $fFiles=$bFiles->fetch(\PDO::FETCH_ASSOC);
}
E o método de deletar:
public function deleteFiles($id)
{
$fFiles=$this->selectFilesById($id);
unlink(DIRREQ.$fFiles['path']);
$this->deleteDB("files","id=?",array($id));
}
Delegando no JS
Como a tabela será inserida dinâmicamente precisamos delegar a nossa div pai .divFiles os eventos dos botões da tabela. Ficará assim:
let divFiles=doc.querySelector('.divFiles');
divFiles.addEventListener('click',function (event) {
event.preventDefault();
let element=event.target;
if(element.id === 'button-trash'){
if(confirm('Deseja mesmo apagar este arquivo?')){
let ajax=new XMLHttpRequest();
ajax.open('GET',getRoot()+'controllers/controllerUpload/delete/'+element.dataset.fileid+'/'+element.dataset.filefk);
ajax.onreadystatechange=function(){
divFiles.innerHTML=ajax.responseText;
};
ajax.send();
}else{
return false;
}
}else if(element.id==='button-view'){
win.open(element.dataset.src,'_blank');
}
},false);
controllerUpload
No controller abriremos uma nova action, a action delete:
<?php
if($action === 'add'){
for($i=0; $i<$count; $i++){
$objUpload->setFile($files);
$objUpload->setDir('img/files/');
$objUpload->setCount($i);
$objUpload->moveFiles();
}
if(count($objUpload->getErro()) === 0){
echo $objUpload->showFiles($nextId);
}else{
foreach ($objUpload->getErro() as $erro){
echo $erro.'
';
}
}
}elseif($action === 'delete'){
$objUpload->deleteFiles($nextId);
echo $objUpload->showFiles($fkFiles);
}
helpers/variables
Vamos adicionar uma consistência na variável action e na variável nextId e criaremos a variável fkFiles. Ficará assim:
if(isset($_POST['action'])){$action=filter_input(INPUT_POST,'action',FILTER_SANITIZE_STRING);}elseif(\Traits\TraitParseUrl::parseUrl(2) !== false){$action=\Traits\TraitParseUrl::parseUrl(2);}else{$action="";}
if(isset($_POST['nextId'])){$nextId=filter_input(INPUT_POST,'nextId',FILTER_SANITIZE_STRING);}elseif(\Traits\TraitParseUrl::parseUrl(3) !== false){$nextId=\Traits\TraitParseUrl::parseUrl(3);}else{$nextId="";}
if(\Traits\TraitParseUrl::parseUrl(4)!=false){$fkFiles=\Traits\TraitParseUrl::parseUrl(4);}
Sucesso nos códigos e na vida!
Posts Relacionados
Múltiplos Uploads com PHP, Mysql e Ajax - #13 Tabela de arquivos
Nessa vídeo-aula iremos exibir os arquivos numa tabela assim que for realizado o upload de forma dinâmica e sem refresh da página.
Múltiplos Uploads com PHP, Mysql e Ajax - #15 Progress Bar
Neste tutorial iremos incrementar nosso sistema de uploads inserindo a barra de progresso para que o usuário consiga acompanhar o desenvolvimento do upload.