Jump to content


Photo

Inserir Imagens No Bd


  • Faça o login para participar
8 replies to this topic

#1 joe27

joe27

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 12/08/2008, 02:38

Olá, tudo bem com vocês do fórum!!!

Gostaria de saber como faço para inserir imagens no bd, direto no phpMyAdmin e também usando formulário. Achei alguns tutoriais, mas ainda não entendi bem.
Sei que posso inserir a imagem direto no bd com o tipo de campo blob (Acho que é isto), mas ví que o mais recomendado seria salvar a imagem numa pasta e colocar apenas o nome ou endereço da imagem no bd.
Estou meio confuso de como criar as pastas no bd para alocar as informações das imagens (Nome, tipo, tamanho, etc.) e também do script php para fazer o upload e visualização, pois nos tutoriais que vi estão cada um de uma forma.

*Estou testando localmente com o Wampserver 2.0.

Se alguém puder me ajudar ficarei muito grato...

#2 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 12/08/2008, 09:03

cara, eu faço assim:

- Script de upload de imagem
- Se enviado, captura alguns dados (nome, extensão, largura, altura), e gravo no BD como VARCHAR, e para dados numéricos
- Depois uso um sistema de thumbnails, caso precise... por isso resgato altura e largura, pra fazer as proporções de imagem certas!

mas ví que o mais recomendado seria salvar a imagem numa pasta e colocar apenas o nome ou endereço da imagem no bd.

é isso msmo, recomendadissimo.

você já trabalhou com uploads? com funçoes tipo... getimagesize, essas coisas, move, copy...
ah, recomendo você testar online, não local... por causa da hierarquia de arquivos e pastas!

dependendo do seu conhecimento, a gente te ajuda a dar um jeito nisso aí! (y)

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#3 joe27

joe27

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 13/08/2008, 19:20

Obrigado pela atenção Maykel.

Estou vendo agora uploads de arquivos, sou iniciante em PHP. Mas consegui fazer upload das imagens.

criei uma pasta chamada "fotos" no C:/wamp/www/"fotos" e também criei um bd "imagem" uma tabela chamada "fotos" com os campos "id" e "nome".

Faço upload através deste formulário:


<html>
<head><title>Form imagem</title></head>
<body>

<center><h2>Formulário de imagens</h2>

<form name="form1" method="POST" action="foto.php" enctype="multipart/form-data">

<p><input type="file" name="arquivo"></p>

<p><input type="submit" name="enviar" value="Enviar"></p></center>

</form>
</body>
</html>

E aquí o código em php que insiro a imagem na minha pasta "fotos" no C: e salvo o nome dela no bd:


<?php

if(isset($_FILES["arquivo"])){

$arquivo = $_FILES["arquivo"];

$pasta_dir = "fotos/";//diretorio dos arquivos
//se nao existir a pasta ele cria uma

}

if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}

$arquivo_nome = $pasta_dir . $arquivo["name"];

// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"],$arquivo_nome);

include "conectar.php";

mysql_query("INSERT INTO fotos VALUES ('$arquivo_nome')");

?>

Até ai tudo bem, só que agora estou tendo problemas para visualizar as imagens.


tentei com esse código:

<?php

$sql = "Select * from fotos";
$query = mysql_query($sql);

while($row = mysql_fetch_array($query)){

$fotos = $row["fotos"];

echo "\$fotos\">

} 

?>

mas não deu deu certo.


Achei esse outro código aqui do Júlio César Martini:


<?
include "conecta.php"; //Conecta com a base de dados
?>
<html>
<head>
<title>iMasters</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<?
$sql = mysql_query("SELECT * FROM fotos ORDER BY RAND()",$con)
or die("erro no SQL: ".mysql_error());
?>
<img src="fotos/<?echo mysql_result($sql,0,"fotos");?>">
</body>
</html>

Também não funcionou.


Só aparece isso "> na página e não mostra nenhum mensagem de erro!!!


Ouvi falar que pode fazer uma página separada para exibir as imagens usando a tag "img" mais ou menos assim:

$dir = "Diretório"; 

$conecta=mysql_connect("localhost","root"); 
mysql_select_db("bancodedados",$conecta); 

$sql= "Select nome_foto from Tabela"; 
$exe = mysql_query($sql, $conecta); 

while ($campo = mysql_fetch_array($exe)) 
{ 

<img scr=<? print "$dir/$campo[nome_foto]"; ?>> 

<? 
} 
?>

Se puder me ajudar a solucionar mais essa dúvida!!!

Ahhh!, achei bem interessante o que você falou sobre esse sistema de thumbnails. Se puder comentar mais sobre ele pra eu ter uma idéia aqui.

Na verdade o que eu gostaria de fazer seria exibir as imagens numa página a partir do nome ou endereço delas no bd, primeiro aparecendo em thumbnails e depois quando clicar em cima aumenta o tamanho (Original) delas, também exibindo o nome da imagem, tamanho, tipo e alguns comentários sobre elas. Também como organizar as imagens na página usando tabelas, colocar no centro, ordem em que elas aparecem...

Mais uma vez... Muito obrigado!!!

#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 13/08/2008, 20:53

Sobre guardar as imagens no bd... tem a ver com integridade dos dados :)
Tendo a imagem salva fora do BD, se você apagar acidentalmente a imagem ou o registro do BD e não fizer o mesmo com o outro, terá uma quebra de integridade.
O BD controla isso, portanto... é mais seguro!

Só que consome mais recursos do servidor (nada tão significativo tbm...) e é mais complicado.
Portanto, se o upload for de um avatar, por exemplo, não precisa gravar no bd.... Keep It Short and Simple :)
Mas se for um documento, por exemplo, é preferível que você guarde no BD e tenha garantia de integridade.

---

Se o seu último script não está mostrando as fotos é porque provavelmente o que vocÊ colocou na variável $dir não é o caminho até essa imagem (y)

#5 joe27

joe27

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 15/08/2008, 22:28

Oi galera!!!

Valeu pela explicação boirock!!!

Mas a coisa aqui tá meio complicada, ainda não consegui visualizar a imagem.

Vou falar como eu estou fazendo:

1º criei uma pasta chamada "minhas_imagens" no diretório onde está instalado o meu Wamp que é C:/wamp/www/"minhas_imagens";

2º Criei um banco de dados através do phpMyAdmin chamado "imagens" e uma tabela chamada "fotos" com os campos "id"(int) e "foto"(varchar);

3º Criei um formulário para fazer a inserção das imagens:


form_imagem.html

<html>
<head><title>Formulário de imagens</title></head>
<body>

<center><h2>Formulário de imagens</h2>

<form name="form1" method="POST" action="inserir.php" enctype="multipart/form-data">

<p><input type="file" name="arquivo"></p>

<p><input type="submit" name="enviar" value="Enviar"></p>

</form></center>
</body>
</html>
4º Criei o arquivo em php para pegar os dados do form e salvar a imagem na pasta e o nome no bd:


inserir.php

<?php

if(isset($_FILES["arquivo"])){

$arquivo = $_FILES["arquivo"]['name'];

$pasta_dir = "fotos/";//diretorio dos arquivos
//se nao existir a pasta ele cria uma

}if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}

$arquivo_nome = $pasta_dir . $arquivo["name"];

// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"],$arquivo_nome);

include "conectar.php";

mysql_query("INSERT INTO fotos VALUES ('', '$arquivo["name"]')");

?>
Daí, fica assim no meu BD:


id======foto
1======minhas_imagens/amostra.jpg



5º Criei um arquivo em php para exibir/visualizar a imagem:


exibir.php

<?php
include "conectar.php"; //Conecta com a base de dados

$sql="SELECT * FROM fotos"; 
$resultado=mysql_query($sql);

$dir ="minhas_imagens/";

while ($linha = mysql_fetch_array($resultado)) {
$imagem = $linha['foto'];
}

echo '<img src="$dir/$imagem">';

?>
Mas não aparece a imagem só aquela moldura e não mostra erro algum.

Já fiz de tudo quanto é jeito, mas a *?*! da imagem não aparece.

Por favor alguém poderia me dizer o que estou fazendo de errado!!!

Desde já grato pela atenção!!!

E aí galera, me ajudem...façam pelo menos alguns comentários, que já vai me ajudar a saber o que pesquisar/estudar mais, blz!!!

Valeu!!!!

E aí galera, me ajudem...façam pelo menos alguns comentários, que já vai me ajudar a saber o que pesquisar/estudar mais, blz!!!


Valeu!!!!

Edição feita por: lwirkk, 15/08/2008, 20:45.
Adicionado a tag [code]/[codebox] para melhor visualização do código-fonte.


#6 mestrexim

mestrexim

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 15/08/2008, 23:48

tira o $dir.
pos vc ja definiu o diretorio qnd vai pro bd ;)
testa efala ai

abraço

#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 18/08/2008, 16:09

Se você olhar no código fonte do browser (Código executado), verá que ele retorna minhas_imagens/minhas_imagens/amostra.jpg.
Por isso que dá erro ;)
Faça o que nosso amigo disse acima.

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#8 joe27

joe27

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 18/08/2008, 19:57

Opa, consegui fazer aqui!!!

Usei esse script:


<?php
include "conectar.php";


$SQL = "SELECT * FROM fotos";
$result_id = mysql_query($SQL) or die(mysql_error());
$total = mysql_num_rows($result_id);

// é aqui pra baixo que você precisa pra ver a foto
if($total)
{
// Abre tabela HTML
echo "<table border=1 cellpadding=3 cellspacing=0>\n";
echo "<tr><th>Imagem</th></tr>\n";

// Efetua o loop no banco de dados
while($dados = mysql_fetch_array($result_id))
{

echo "<tr><td><img width=\"350\" height=\"350\" src=\"" . $dados["foto"] . " \" ><br>ID: ".$dados["id"]."</td>";

echo "</tr>\n";
}

// Fecha tabela
echo "</table>\n";
}else{
echo "Nenhuma Foto Cadastrada";
}

?>


Só que surgiu mais algumas dúvidas (Pra variar, rsrsrs), mas iniciante é assim mesmo.

Agora quando eu inserir no bd apenas o nome da imagem e não o endereço mais o nome, como ficaria o script para eu poder visualizar?

Tenho uma pasta chamada "minhas_imagens" criada no C:/wamp/www/.

Estava assim antes o meu bd (Este é o que está funcionando):

id foto
1 minhas_imagens/amostra.jpg


Agora eu coloquei assim:

id foto
1 amostra.jpg


==================================================================


Agora como eu faria para visualizar primeiro em miniatura (Thumbnails) e depois quando eu clicar na imagem ela abrir em outra página no tamanho original?

E também visualizar as imagens lado a lado, e quando por exemplo, estiver preênchido 4 imagens, lado a lado, automaticamente pula uma linha ou uma célula da tabela para então proceder da mesma forma que na linha de cima, como uma galeria de fotos?

Obrigado a todos por me ajudar!!!!

Se precisar de alguma ajuda, se estiver ao meu alcance, ficarei muito grato em ajudar também!!!

#9 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 29/10/2017, 19:09

Walmart Prescription Prices Macrobid Direct Medicine Free Shipping No Physician Approval Using Outdated Amoxicillin viagra Propecia Contraindications Benign Prostatic Hyperplasia What Is Cephalexin Good For
Cialis Munchen cialis price Amoxicillin And Leave And Body Priligy Duracion Tratamiento Viagra Forum Wirkung




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq