Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Download de arquivos Selecionados

26-05-2015 18:03

Boas!

Tenho um banco de dados com arquivos ligados a algumas condições, preciso listar o nome desses arquivos com link pra download, isso não é problema, eu até já tenho semi pronto.

O que eu não acho e nem sei como procurar (nem fazer) é:
• Preciso de um checkbox em cada arquivo, após marcar os arquivos que eu quero clico em um botão e ele baixa todos, pode ser em .zip talvez, não sei.
• Um checkbox com "Selecionar todos", assim checa esse box e seleciona todos da página.

Alguem tem um exemplo ou um código parecido com o que preciso?

Agradeço desde já! :)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

26-05-2015 18:25

O checkbox selecionar todos você pode usar o desse link Selecionar-todos-input-checkbox-com-jQuery_3_5867.html

Já para zipar os arquivos baseado no nome, você precisa de uma classe PHP, como essa http://davidwalsh.name/create-zip-php
1
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

26-05-2015 18:50

Se quiser dá uma conferida nesse link também Como-zipar-varios-arquivos-e-forcar-o-d ... _9072.html
1
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

26-05-2015 18:54

Show, vou ver! Obrigado
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

30-06-2015 17:56

Opa!!! Depois de tempos mexendo aqui nesse post denovo rs!

Primeiramente obrigado, deu td certo sobre selecionar todos os checkbox e tambem aprendi a colocar arquivos em um zip e forçar download dos mesmos! valeu!

Agora só me falta tirar uma dúvida do jeito que estou fazendo

Quando clica em um checkbox ou mais, ele pega o nome do arquivo desse id no banco de dados e passa o nome para o arquivo que força o download e grava as alteraçõe no banco, por exemplo:

[ ] arquivo 1.pdf
[ ] arquivo 2.pdf
[ ] arquivo 3.pdf
[ ] arquivo 4.pdf

Se eu selecionar o arquivo 1 e 3.pdf, ele manda esses dois nomes para o arquivo que força o download, no meu caso "download_varios.php"

Ai nesse arquivo, eu quero que junte esses dois arquivos apenas para o download, hoje estou fazendo manual isso com array, ex.:

$nome_download = array($nome_array); $zip = new ZipArchive(); if( $zip->open( 'arquivos.zip' , ZipArchive::CREATE ) === true){ $zip->addFile( "projetos/".$nome_download[0]); $zip->addFile( "projetos/".$nome_download[1]); $zip->addFile( "projetos/".$nome_download[2]); $zip->close(); header('Content-type: application/zip'); header('Content-disposition: attachment; filename="arquivos.zip"'); readfile('arquivos.zip'); unlink('projetos/arquivos.zip'); }

Se for um exemplo com 4 arquivos pode fazer na mao mesmo desse jeito né, o problema é que vai ter casos com 50 ou 100 arquivos, ai nao queria estivar essa lista até 100:

$zip->addFile( "projetos/".$nome_download[1]);
$zip->addFile( "projetos/".$nome_download[2]);

Tem algum jeito mais inteligente de fazer isso, tipo pegar os marcados e separar por virgula, ou por quebra de linha???

Obs.:
Eu tentei assim, mas ele só veio 1 arquivo, o "arquivo2.pdf".
$zip->addFile( "projetos/arquivo1.pdf", "projetos/arquivo2.pdf" );

Valeu!
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

30-06-2015 18:00

Detalhe que esqueci de colocar, eu já faço um foreach para passar apenas os campos selecionados, eu já posso ter os nomes deles listados como for, ex.:

arquivo1.pdf
arquivo2.pdf
arquivo3.pdf
arquivo4.pdf

ou

arquivo1.pdf, arquivo2.pdf, arquivo3.pdf, arquivo4.pdf,

Abs
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

30-06-2015 20:11

Você pode usar um for para contar quantos elementos há no array.

if( $zip->open( 'arquivos.zip' , ZipArchive::CREATE ) === true){ // LISTANDO OS ITENS DO ARRAY for($i = 0; $i < count($nome_download); $i++) { $zip->addFile( "projetos/".$nome_download[$i]); } // LISTANDO OS ITENS DO ARRAY $zip->close(); // continua..

1
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

01-07-2015 14:30

Deu algum erro, veja o código abaixo e o erro que deu aqui: http://prntscr.com/7nlves

É como se ele não terminasse o script, pq ele não deleta o arquivo obedecendo o unlink do código (antes deletava)

<? if(isset($_POST["id_arquivo"])) { echo "Os arquivos escolhidos para download são:<BR>"; // Faz loop pelo array dos numeros foreach($_POST["id_arquivo"] as $id_arquivo) { echo "- " . $id_arquivo . "<BR>"; $nome_array = $id_arquivo; $nome_download = array($nome_array); echo $nome_download[0]; $data = date("Y/m/d"); $log = 'Download realizado em <strong>'.date("d/m/Y", strtotime($data)).'</strong>'; $atualizar = "UPDATE arquivos SET log = '$log' where arquivo = '$id_arquivo'"; $rs = mysql_query($atualizar); $zip = new ZipArchive(); if( $zip->open( 'arquivos.zip' , ZipArchive::CREATE ) === true){ // LISTANDO OS ITENS DO ARRAY for($i = 0; $i < count($nome_download); $i++) { $zip->addFile( "projetos/".$nome_download[$i]); } // LISTANDO OS ITENS DO ARRAY $zip->close(); header('Content-type: application/zip'); header('Content-disposition: attachment; filename="arquivos.zip"'); readfile('arquivos.zip'); unlink('projetos/arquivos.zip'); } } } else { echo "Você não escolheu nenhum arquivo para download!<br>"; } ?>

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

01-07-2015 15:00

a array tem que estar separada por virgula ou algo do tipo?

Pois hoje ela esta exibindo assim: arquivo1.pdfarquivo2.pdf

Sem separação nenhuma

Vlw
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

01-07-2015 15:51

Eu imaginei que você estava usando o input checkbox como array, como esse exemplo.

<?php if(isset($_POST)) { $arquivo = $_POST['arquivo']; for($i = 0; $i < count($arquivo); $i++) { //$zip->addFile( "projetos/".$arquivo[$i]); echo $arquivo[$i]; } } ?> <form action="" method="post"> <input type="checkbox" name="arquivo[]" value="arquivo1.php"> <input type="checkbox" name="arquivo[]" value="arquivo2.php"> <input type="submit"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

01-07-2015 16:07

Então, na verdade ele lista os arquivos do banco automatico, com while, o Input checkbox array existe, veja:

<input name="id_arquivo[]" type="checkbox" class="checkbox" id="campo[<?= $campo["id_arq"] ?>]" value="<?= $campo["arquivo"] ?>" />

Dai ele passa todos os campos selecionados para outra página, com o for each ele lista

// Faz loop pelo array dos numeros foreach($_POST["id_arquivo"] as $id_arquivo) { echo "- " . $id_arquivo . "<BR>";

Então nesse arquivo que recebe os nomes, eu tenho eles listados do jeito que eu preferir, pelo <br> ou "," ou ";"

Aí eu criei uma array como teste nesse arquivo mesmo mesmo, essa array me possibilitou fazer o exemplo que citei aqui:

$zip->addFile( "projetos/".$nome_download[0]); $zip->addFile( "projetos/".$nome_download[1]); $zip->addFile( "projetos/".$nome_download[2]);

Esses arquivos listados que eu preciso que grave no zip, naquele exemplo primeiro eu fiz array e deu certo, mas como disse, pode chegar a 100 arquivos.

Aí eu queria pegar essa lista de arquivos que tenho e colocar dentro do zip entendeu? só nao sei como, se puder me ajude rs

Obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

01-07-2015 16:46

No foreach não é necessário o número, já que o laço vai percorrer todos os input checkbox que estão checados.

Eu vou postar um exemplo que testei aqui

<?php if(isset($_POST['envia'])) { $zip = new ZipArchive(); $arquivo = Array(); if( $zip->open( 'arquivos.zip' , ZipArchive::CREATE ) === true){ foreach($_POST["arquivo"] as $id_arquivo) { $zip->addFile($id_arquivo); } } $zip->close(); header('Content-type: application/zip'); header('Content-disposition: attachment; filename="arquivos.zip"'); readfile('arquivos.zip'); unlink("arquivos.zip"); } ?> <form action="" method="post"> <input type="checkbox" name="arquivo[]" value="css.css"> <input type="checkbox" name="arquivo[]" value="config.php"> <input type="submit" name="envia"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

01-07-2015 16:58

Perfeito, adaptei aqui e funcionou :)

Ficou assim:
$arquivo = Array(); if( $zip->open( 'arquivos.zip' , ZipArchive::CREATE ) === true){ foreach($_POST["id_arquivo"] as $id_arquivo) { $zip->addFile("projetos/".$id_arquivo); }

Me tira uma duvida, pq essa linha?

$arquivo = Array();

Muito obrigado mais uma vez, Valeuuu!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17616
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Download de arquivos Selecionados

01-07-2015 16:59

Pode tirar, é que eu tinha testado outro código no mesmo documento.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 268
Sexo: Masculino

Re: Download de arquivos Selecionados

01-07-2015 17:00

Show, valeu!!!
1

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado