Jump to content


Photo

Imagem No Mysql


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

#1 Carlos Maniero

Carlos Maniero

    Normal

  • Usuários
  • 72 posts
  • Sexo:Masculino

Posted 18/05/2009, 22:03

Pessoal achei o código para salvar no imagem db segue:
[codebox]<?php
if($_POST) {
if($_POST['MAX_FILE_SIZE'] >= $_FILES['file']['size']) {
// preencha os dados de conexão abaixo
mysql_connect("localhost", "root", "senha") or die(mysql_error());
mysql_select_db("noticias");
$photo = addslashes(fread(fopen($_FILES['file']['tmp_name'], "r"), $_FILES['file']['size']));
$query = sprintf("INSERT INTO imagens(imagem, tipo) VALUES ('%s', '%s')", $photo, $_FILES['file']['type']);
if (mysql_query($query)) {
$messages[] = "Arquivo enviado e armazenado no BD com sucesso.";
} else {
$messages[]= mysql_error();
}
} else {
$messages[] = "O arquivo tem mais de (96k), reduza o tamanho do arquivo a ser enviado.";
}
}
?>

<?
if (isset($messages)) {
foreach ($messages as $message) {
print $message ."<br>";
}
}
?>

<form action="" method="POST" enctype="multipart/form-data" name="form">
<input type="file" name="file">
<input type="hidden" name="MAX_FILE_SIZE" value="96000">
<input type="submit">
</form>[/codebox]

Até ai Blz!

Eu tambem encontrei para mostrar segue:

[codebox]
<?php
// preencha os dados de conexão abaixo
mysql_connect("localhost", "root", "senha") or die(mysql_error());
mysql_select_db("noticias");
// estearquivo.php?id=... ( salvo no BD )
$result = mysql_query(sprintf("SELECT * from imagens WHERE id = %d", $_GET['id']));
$row = mysql_fetch_array($result);
header(sprintf("Content-type: %s", $row['FileType']));
print $row['imagem'];
?>[/codebox]

Mais não era bem isso, pois ai ele mostra a imagem como se eu só a abrisse no navegador (sem cógigo) e quando você tento colocar algum código nela da um bug mostro alguem sabe outro modo de mostrar a imagem?

Edição feita por: Carlos Maniero, 18/05/2009, 22:06.


#2 Marcus Nunes

Marcus Nunes

    Turista

  • Usuários
  • 51 posts
  • Sexo:Masculino

Posted 18/05/2009, 23:20

Carlos,
é melhor armazenar apenas o caminho da imagem no banco de dados.

Para chamá-la neste caso seria: <img src="script-mostra-imagem.php" />

#3 Dudu

Dudu

    Viva la vida

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

Posted 19/05/2009, 21:03

Sim, pois não pode ter nenhuma saída HTML antes do header(), por isso deve-se salvar este arquivo separadamente e executá-lo como se fosse uma imagem (jpg, png, gif, etc).

Acho que isso não é uma dúvida de MySQL, e sim de PHP.
Até mais!

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


Twitter: HostCheap


#4 Carlos Maniero

Carlos Maniero

    Normal

  • Usuários
  • 72 posts
  • Sexo:Masculino

Posted 19/05/2009, 23:41

Ah entendi Valew pela ajuda!

#5 tv bobo

tv bobo

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Masculino
  • Localidade:Divinópolis MG

Posted 16/06/2009, 13:10

Caro Carlos Maniero,

Estou às voltas com o problema de inserção de imagens em banco de dados.

seu código funcionou, obrigado.

no insert tem dois campos utilizados para entrada dos dados

um deles aparece o tipo e no outro são carregados os dados, ok

depois tem uns símbolos que eu não entendi o porquê

$query = sprintf("INSERT INTO imagens(imagem, tipo) VALUES ('%s', '%s')", $photo, $_FILES['file']['type']);

imagem >> está carregando os dados (conteúdo) da imagem
tipo >> está carregando o tipo ex. image/pjpeg

até aí eu entendi e funciona.

se puder me ajudar:

onde e como posso pegar o nome e tamanho do arquivo e inserí-los

INSERT INTO imagens(imagem, tipo, nome, size) VALUES (????......)

o que significa %s

parece-me que essa expressão abaixo refere-se a isso, mas como usá-la para atender meu objetivo?

$photo, $_FILES['file']['type']

de qualquer maneira funcionou e já está muito bom, mas fico impressionado com a falta de informação para um assunto básico de internet. Incluir imagem num banco de dados é a primeira coisa que um programador pode pensar, pois uma página sem imagem é como comida sem sal.

tchau.

#6 Dudu

Dudu

    Viva la vida

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

Posted 16/06/2009, 21:04

Veja a função sprintf().
Até mais ^_^

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


Twitter: HostCheap





1 user(s) are reading this topic

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

IPB Skin By Virteq