Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sphinter

Qual a melhor forma de Upload de Img + Mysql

Recommended Posts

Bom Dia Genios do PHP =)Estou desenvolvendo uma aplicação onde meu cliente vai cadastrar um produto e inserir até 6 fotos do produto, ondé a primeira foto será a foto que aparecera na categoria será a foto principal, ja as outras aparece após o usuario clicar no produto para ter maiores informações.Ai eu estou com uma duvida de qual seria a melhor forma de resgatar essas imagens depois que o produto foi cadastrado.Eu posso inserir no BD os caminhos das 6 fotos do produto, ou eu insiro no BD apenas o caminho da pasta e depois listo todos os arquivos da pasta?Ou tem outra forma mais simples?Fico no aguardo...att,Daniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se houver diretórios separados para cada produto, salvar o caminho do respectivo diretório me parece mais simples, já que listar as fotos do diretório também é fácil. Mas se você não for criar um diretório para cada procuto, o negócio é cadastrar o caminho para todas as fotos.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo eu vo ter um problema se eu for salvar o caminho do diretorio,Porque eu preciso ter uma das imagens a principal que vai ser listado na categoria, ai como que eu vo fazer pra "setar" a tal da imagem como a principal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, tambem estou desenvolvendo uma aplicação a um cliente semelhante, porem com três fotos.

È bem simples. Acredito que a forma mais simples é você criar uma pasta chamada produtos e la dentro colocar todas as fotos. Quando inserilas no banco de dados, basta inserir apenas o nome da foto ex um forma de renomear cada foto:

 

<?$nome = time(); //Determina a foto um nome que já mais se repetira.$nome_foto1 = $nome."1.jpg";$nome_foto1 = $nome."2.jpg";$nome_foto1 = $nome."3.jpg";$nome_foto1 = $nome."4.jpg";$nome_foto1 = $nome."5.jpg";?>

Esta é uma forma simples somente um exemplo o nome de cada foto vai sair mais ou menos desta forma:

 

1855132101.jpg

1855132102.jpg

1855132103.jpg

1855132104.jpg

1855132105.jpg

 

Dai inserindo o nome das fotos quando você for inserilas basta inserilas mais ou mesmo desta forma:

 

<img src="/caminhodafoto/diretorio/<? echo $resultado_do_db; ?>">

Assim ele insere o caminho e diretorio normal para cada foto, so muda a variavel resultado do db...

 

Acho que era isso qualquer coisa posta ai novamente !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo desculpe minha ignorancia.. =P

 

Mas eu to com uma duvida de como eu iria fazer pra renomear as fotos...

 

Segue a parte do script que faz o upload.

 

for ($indice=0;$indice<count($arquivos);$indice++) {	 if (!empty($arquivos_name[$indice]) and is_file($arquivos[$indice])) {		  $dir1 = "../fotos/$dire2";		  $caminho = $dir1."/".$arquivos_name[$indice];		  copy($arquivos[$indice],$caminho);		  $msg[] = "Arquivos enviados com sucesso!";	 }	 }

Editando:

Hospeda SUL, eu ja tenho uma classe que está fazendo os uploads, meu problema é mesmo setar uma imagem principal uma imagem de capa.

 

Mas vlw pela ajuda ai kra ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que pegar $arquivos_name[$indice] e usar explode() para separar o nome nos pontos, para separar o nome da extensão. Após isso, adicione um número (póde ser o próprio $indice) ao nome e concatene a extensão a esse valor.

 

Por exemplo:

 

$nome = "foto.do.beraldo.jpg";
$f = explode(".", $nome);
$f[(count($f) -2 )] .= $indice;
echo implode(".", $f);

Esse é o raciocínio. ;)

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahn...

Problemas...

=P

 

As fotos estão continuando com os mesmos nomes da que eu envio pelo upoload..

 

nao está renomendo pra 1, 2, 3, 4 e etc..

 

=(

 

for ($indice=0;$indice<count($arquivos);$indice++) {	 if (!empty($arquivos_name[$indice]) and is_file($arquivos[$indice])) {		  $f = explode(".", $arquivos_name[$indice]);		  $f = $indice.$f[2];		  $nome = implode(".", $f);		  $dir1 = "fotos/$dire2";		  $caminho = $dir1."/".$nome;		  copy($arquivos[$indice],$caminho);		  $msg[] = "Arquivos enviados com sucesso!";	 }	 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui:

 

$f = $indice.$f[2];
		  $nome = implode(".", $f);

Você transforma $f em string e depois a coloca no implode(), por isso não funciona. Faça como eu propus, já que nem sempre a foto terá um oi dois pontos somente.

 

O nome foto.do.beraldo.jpg após o explode() ficará assim:

 

[0] foto

[1] do

[2] beraldo

[3] jpg

 

São quatro índices; representemos esse total por "n" (n = 4 nesse caso). O último índice é (n - 1) , 3 nesse caso. Como o número não pode ser inserido na extensão do arquivo, deve-se inseri-lo no valor da chave (n - 2). ;)

 

Faça assim:

for ($indice=0;$indice<count($arquivos);$indice++) {
	 if (!empty($arquivos_name[$indice]) and is_file($arquivos[$indice])) {
		  $f = explode(".", $arquivos_name[$indice]);
		  $f[(count($f) -2 )] .= $indice;
		  $nome = implode(".", $f);
		  $dir1 = "fotos/$dire2";
		  $caminho = $dir1."/".$nome;
		  copy($arquivos[$indice],$caminho);
		  $msg[] = "Arquivos enviados com sucesso!";
	 }

	 }

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm...

Beraldo..

Desculpe ficar te enxendo tanto assim...

 

Eu entendi a tua explicação, tentei mudar ela porque eu preciso que ele crie as imagens assim:

 

se eu mandar uma imagem com o nome xyz.jpg ele transforma em 1.jpg

se eu mandar uma imagem com o nome bbc.jpg ele transforma em 2.jpg

 

e assim por diante... até as 6 fotos..

 

Esse código ta fazendo assim:

 

Envio Transforma

xyz.jpg => xyz1.jpg

bbc.jpg => bbc2.jpg

vvv.jpg => vvv3.jpg

 

Ele está adicionando os numeros depois do nome do arquivo...

 

Como que eu faria pra ele ignorar o nome do arquivo e pra renomear pra 1, 2, 3, 4, 5 ....

 

 

vlw

 

[RESOLVIDO]

 

Desculpa a perturbação ai...

Eu pensei um poquinho aqui e consegui fazendo assim:

for ($indice=0;$indice<count($arquivos);$indice++) {	 if (!empty($arquivos_name[$indice]) and is_file($arquivos[$indice])) {		  $nome = $indice.'.jpg';		  $dir1 = "fotos/$dire2";		  $caminho = $dir1."/".$nome;		  copy($arquivos[$indice],$caminho);		  $msg = "Arquivos enviados com sucesso!";	 }	 }

Vlw a ajuda ai Beraldo ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se a imagem for do tipo GIF ou PNG...? ;)

 

Eu faria assim:

 

Daria um explode() no nome do arquivo, separando-o pelo ponto. Em seguida, usaria end() para pegar o último elemento do array, que é a extensão do arquivo.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.