Ir ao conteúdo
  • Cadastre-se

Lógica criação de db para imagens


Posts recomendados

E aí gurizada, blz? É o seguinte: tenho um formulário para fazer upload de até cinco imagens. A dúvida é: na criação do db, qual é a melhor maneira para inserir essas imagens?

 

Exemplo 1

####################################################

| id  |     foto1     |     foto2      |     foto3     |      foto4    |     foto5     |

|  1  |  foto1.jgp  |   foto2.jpg  |  foto3.jpg  |   foto4.jpg  |  foto5.jpg  |

####################################################

 

Exemplo 2

##############

| id  |       foto      |

|  1  |   foto1.jgp  |

|  1  |   foto2.jgp  |

|  1  |   foto3.jgp  |

|  1  |   foto4.jgp  |

|  1  |   foto5.jgp  |

##############

 

Lembrando que este banco de dados terá mais dados, não apenas as imagens, então, no meu ver, se eu fizer como no segundo exemplo, exceto as imagens, os demais dados serão repetidos 5 vezes. Outro problema é que pode conter até cinco imagens, como pode contar nenhuma, caso eu faço como no primeiro exemplo, como eu faria a condicional para saber se há ou não imagem para ser inserida na sua respectiva coluna? É essa a minha dúvida, quem puder me ajudar agradeço.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Felipe Paz Olá,  

9 horas atrás, Felipe Paz disse:

no meu ver, se eu fizer como no segundo exemplo, exceto as imagens, os demais dados serão repetidos 5 vezes.

Não se a tabela de imagens seja específica somente para ela.

 

9 horas atrás, Felipe Paz disse:

como eu faria a condicional para saber se há ou não imagem para ser inserida na sua respectiva coluna?

 

Nesse caso, você faz uma consulta aos campos. sendo que cada campo tem um nome... que foto1,foto2 e etc..

Você pode deixar como nula ou inserir uma palavra como vazia.. então usar o where e ver quais os campos possuem a palavra vazio..   não acho uma boa ideia isso.

 

Portanto o melhor que acho que podes fazer é criar uma nova tabela somente para as fotos.  E nele armazenar o ID de quem enviou e o nome delas.

Daí a partir disso como serão  5 linhas diferentes, você faz um count().. se for menor que 5.. está faltando uma imagem... nesse caso você não distingue posições... mas sim quantidades.. se o máximo é 5,  se tiver 4 falta 1, se tinhas 3 falta duas... e por aí vai!

 

espero que a explicação tenha sido clara.

 

 

Link para o comentário
Compartilhar em outros sites

@DiF Entendi sim, a parte da construção do db era mais ou menos  o que eu já imaginava claro que vai ter mais dados por causa do filtro de imagens, anunciante, anúncio mas não entendi a parte do count para verificar quantos arquivos foram selecionados. Na verdade, seria um array e, então, eu faria a verificação de quantos dados foram incorporados neste array. Correto?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Felipe Paz Não, não precisa de array!   count é só uma contagem mesmo!

 

Exemplo

 

Vamos supor que já tenhas a tabela de imagens  com 2 usuários que enviou imagens:

ID  id_usuario  foto
1       1       imagem1.png
2       1       imagem2.png
3       1       imagem3.png
4       1       imagem4.png
5       1       imagem5.png
6       2       imagem6.png
7       2       imagem7.png
8       2       imagem8.png

O usuário 1 tem 5 imagens e o usuário 2 tem só 3.

 

Você pode contar tanto no SQL como no PHP  e  combinar o SQL com o php para a verificação!

 

No SQL você faz:

  

SELECT count(foto) FROM fotos_usuarios WHERE id_usuario = 1

Retorna a quantidade total de fotos do usuário 1.

 

No php você pode usar o mysqli_num_rows() para contar as linhas recuperadas.

 

Mas se combinar as duas fica melhor... por exemplo:

 

<?php
   include 'conexao.php';
    //id do usuário, aqui coloquei assim, mas no seu caso deve usar 
    //a session para guardar o ID do usuário.
    $id = 2;   

   $verifica_imagens = mysqli_query($conexao,"SELECT count(foto) as numFotos FROM WHERE id_usuario = $id"); 
   $imagens = mysqli_fetch_object($verifica_imagens); 
   $total = 5;
   $calculo = $total - $imagens->numFotos;

   echo ($calculo != 0) ? "Falta(m) $calculo imagens" : "Você tem o limite máximo de 5 imagens";
   

   
    

Seria algo assim

 

Repare que para economizar linhas, usei o IF ternário.

Mas poderias fazer assim:

if($calculo != 0):
    echo "Falta(m) $calculo imagens";
else:
    echo "Você já tem o valor limite de imagens";
endif;

Porque diferente de zero?  porque zero é a diferença do total pela contagem... se aparecer zero é porque ele já tem 5 imagens!

Se for diferente de zero significa que falta pelo menos 1.

 aí entra a contagem ali.. e diz quantas ele precisa inserir para atingir o limite!

 

é por aí a coisa

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!