Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Múltiplos Uploads com PHP, Mysql e Ajax - #14 Visualizar e Deletar

01/12/2019

Na 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!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

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.
Saiba mais!
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.
Saiba mais!
MultiUploads
No curso de múltiplos uploads utilizando php, mysql e ajax trabalharemos com o envio de diferentes arquivos, barra de progresso e sem utilização de plugins.
Saiba mais!