Ir para conteúdo

POWERED BY:

Arquivado

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

phpstyle

Inserir imagens no bd

Recommended Posts

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma pasta, exemplo "fotos" no C:\, ficando assim "C:\fotos", depois crie uma tabela no DB com o nome "fotos" e as colunas que precisar tpw, "foto1, tamanho"....

 

Agora no formulario coloque os inputs em modo de array:

 

form.php

<p><input type="file" name="foto[]" /></p>
<p><input type="file" name="foto[]" /></p>

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

codigo.php

<?php
$dir = "C:\fotos\";
if($_POST['enviar'])
//Enviando os arquivos para o destino da variavel $dir:
{
for($i = 0; $i < count($_FILES['foto']['name']); $i++) {
move_uploaded_files($_FILES['foto']['tmp_name'][$i], $dir . $_FILES['foto']['name'][$i]); }

//Inseri a foto no DB:
if(!empty($_FILES['foto']['name'][0])) { $foto1 = $_FILES['foto']['name'][0]; }
if(!empty($_FILES['foto']['name'][0])) { $foto2 = $_FILES['foto']['name'][0]; }

mysql_query("INSERT INTO fotos(foto1, foto2) VALUES ('$foto1', '$foto2') ");
}

?>

acho q é isso msm, fiz de cabeça, qualquer errinho que tiver ai, posta ake..... vlwee...

Compartilhar este post


Link para o post
Compartilhar em outros sites

corrigindo:

 

troque essas linhas:

//Inseri a foto no DB:
if(!empty($_FILES['foto']['name'][0])) { $foto1 = $_FILES['foto']['name'][0]; }
if(!empty($_FILES['foto']['name'][0])) { $foto2 = $_FILES['foto']['name'][0]; }

por essas:

//Inseri a foto no DB:
if(!empty($_FILES['foto']['name'][0])) { $foto1 = $_FILES['foto']['name'][0]; }
if(!empty($_FILES['foto']['name'][1])) { $foto2 = $_FILES['foto']['name'][1]; }

OBS: não esquece da no form declarar o enctype:

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simplificando, troque:

 

//Inseri a foto no DB:
if(!empty($_FILES['foto']['name'][0])) { $foto1 = $_FILES['foto']['name'][0]; }
if(!empty($_FILES['foto']['name'][1])) { $foto2 = $_FILES['foto']['name'][1]; }

por

 

//Inseri a foto no DB:
$foto1 =(!empty($_FILES['foto']['name'][0])) ? ($_FILES['foto']['name'][0])  :false;
$foto2 =(!empty($_FILES['foto']['name'][1])) ? ($_FILES['foto']['name'][1]) :false;

Vai fazer o mesmo efeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não foi essa a dúvida do topicmaster... ele tá querendo inserir a imagem DIRETO no banco, eu sei que tem como por que já trabalhei com um jogo que algumas imagens ficam salvas numa coluna em formato binário e você 'decodifica' ela usando o PHP e o GD.. mas pra jogar no banco eu naõ tenho a mínima idéia de como é feito..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal, tudo bem!!!

 

Muito obrigado a todos pelas respostas. A partir delas clareou mais minhas idéias e 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 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 puderem me ajudar a solucionar mais essa dúvida!!!

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi galera!!!

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho que vcs esqueceram de fazer uma verificação do formato de imagem pro cara não colocar outro arquivo a não ser fotos :P

 

faz diferente... faz seu formulário normal.... na hora de fazer o upload da imagem faz um campo do tipo text e um link do lado que abre uma janela de upload ... primeiro ela vai jogar essa imagem pra pasta e depois pode colocar um javascript que retorna o nome dela pro campo e este grava o nome dela no banco..

 

se você não tiver resolvido creio que amanha cedo posto o script da janela de upload pra você ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não Rails. Sobre a verificação do formato da imagem até vi uns scripts e acho que saberia fazer, mas o que eu queria mesmo é a visualização da imagem, isso é que tá me pegando. Acho que é coisa fácil mas ainda não saquei como fazer direito. Se você puder colocar como você faz, já me ajudaria para ter uma idéia e continuo pesquisando/estudando até conseguir... Na minha resposta está passo-a-passo como eu fiz, se tiver um tempo e conseguir ver o que está errado.

 

Valeu pela atenção!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não Rails. Sobre a verificação do formato da imagem até vi uns scripts e acho que saberia fazer, mas o que eu queria mesmo é a visualização da imagem, isso é que tá me pegando. Acho que é coisa fácil mas ainda não saquei como fazer direito. Se você puder colocar como você faz, já me ajudaria para ter uma idéia e continuo pesquisando/estudando até conseguir... Na minha resposta está passo-a-passo como eu fiz, se tiver um tempo e conseguir ver o que está errado.

 

Valeu pela atenção!!!!

pra você ver a imagem o código é este testa ai

 

<?php

$conect = mysql_connect("seu host","seu usuario","sua senha");

mysql_select_db("seu db",$conect);

 

$SQL = "SELECT *

FROM foto";

$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 src=\"" . $dados["endereco"] . " \" width=\"450\" height=\"450\"><br>".$dados["descricao"]."</td>";

 

echo "</tr>\n";

}

 

// Fecha tabela

echo "</table>\n";

}else{

echo "Nenhuma Foto Cadastrada";

}

mysql_close($conect);

?>

 

espero que tenha ajudado !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, Humberto Barbosa!!!! Consegui fazer do jeito que você falou.

 

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

 

 

e o script em php:

 

exibir.php

 

<?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))

{

 

 

//Como ficaria o endereço agora???

 

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";

}

 

?>

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

 

 

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?

 

Mais uma vez muito obrigado mesmo por me ajudar!!!!

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara isso ai que você quer já é outra coisa

ai teremos que pesquisar da uma procurada

em forum específicos de php, ou vai no google e procura

por thumbnails + mysql vou da uma pesquisada

se achar alguma coisa posto aqui

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.