msena 0 Report post Posted May 24, 2011 Como recuperar dados BLOB com PHP e MySQL? Tenho os campos "codigo" e "imagem", a imagem é inserida no banco mysql. Como faço para listar e mostrar esta imagem que está inserida no Mysql? Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 25, 2011 Como ela está codificada ? Base 64 ? crie um arquivo: imagem.php <?php include 'conexao.php'; $Id = (int)$_GET['cod']; $sql = "select foto from tblfuncionario where codfuncionario = $Id"; $exe = mysql_query($sql); header("Content-Type: image/jpg"); echo base64_encode(mysql_result($exe, 0, 'foto')); ?> Para mostrar, coloque esse código na onde a imagem tem que aparecer. <img src='imagem.php?cod=1' /> Share this post Link to post Share on other sites
msena 0 Report post Posted May 25, 2011 Como ela está codificada ? Base 64 ? crie um arquivo: imagem.php <?php include 'conexao.php'; $Id = (int)$_GET['cod']; $sql = "select foto from tblfuncionario where codfuncionario = $Id"; $exe = mysql_query($sql); header("Content-Type: image/jpg"); echo base64_encode(mysql_result($exe, 0, 'foto')); ?> Para mostrar, coloque esse código na onde a imagem tem que aparecer. <img src='imagem.php?cod=1' /> Amigo estes são os campos que tenho: id ext imagem codigo, sendo que a imagem fica locada no Mysql, e "ext" é a extenção do arquivo que pode ser jpg, gif, pdf... Como ficaria neste caso? Agradeço desde já amigo Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 25, 2011 Só você adaptar o Select, eu te mandei um exemplo que eu tenho aqui. E olha o Header tbm, lá você vai por o EXT. Tenta ae... se der erro poste o que você fez e o erro. Share this post Link to post Share on other sites
msena 0 Report post Posted May 25, 2011 <?php $conexao = mysql_connect("localhost","use","senha"); $db = mysql_select_db("meubanco"); $Id = (int)$_GET['codigo']; $sql = "SELECT * FROM imgguad ORDER BY id"; //$sql = "select imagem from imgguad where codigo = $Id"; $exe = mysql_query($sql); header("Content-Type: image/jpg"); echo base64_encode(mysql_result($ext, 0, 'imagem')); ?> Apresentou este erro: "A imagem "http://111.11.1.11/2.php" contém erros e não pode ser exibida." Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 25, 2011 Tem uma variável errada na ultima linha. Share this post Link to post Share on other sites
msena 0 Report post Posted May 25, 2011 Para vocÊ ter uma melhor noção, veja o arquivo que uso para inserir as imagens no BD. Valeu e obrigado. <?php //Inicia sessao e carrega o usuario ob_start(); session_start(); if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto")) { $usuario = strtoupper($_SESSION["usuario"]); } else { // endsession(); header("Location: redir.php"); } $db_host = 'localhost'; // don't forget to change $db_user = 'user'; $db_pwd = 'senha'; $database = 'banco'; $table = 'tabela'; // use the same name as SQL table if (!mysql_connect($db_host, $db_user, $db_pwd)) die("Nao e Possivel Conectar ao Banco de Dados! "); if (!mysql_select_db($database)) die("Nao e Possivel Selecionar o Banco"); function sql_safe($s) { if (get_magic_quotes_gpc()) $s = stripslashes($s); return mysql_real_escape_string($s); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $title = trim(sql_safe($_POST['title'])); if ($title == '') $title = '(empty title)'; if (isset($_FILES['photo'])) { @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']); if ($imtype == 3) $ext="png"; elseif ($imtype == 2) $ext="jpg"; elseif ($imtype == 1) $ext="gif"; else $ext="pdf"; //$msg = 'Erro: Tipo desconhecido'.$imtype; if (!isset($msg)) { $data = file_get_contents($_FILES['photo']['tmp_name']); $data = mysql_real_escape_string($data); mysql_query("INSERT INTO {$table} SET ext='$ext', title='$title', imagem='$data' , codigo='$codigo', usuario='$usuario' "); $msg = 'Imagem Carregada com Sucesso'; } } elseif (isset($_GET['title'])) $msg = 'Erro: Arquivo nao Carregado'; } ?> <html> <head><title>Cadastro de Imagens</title> <link href="face2.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="white" class="corpo1"> <div id="logo"></div> <style type="text/css"> <!-- input { background-color: "white"; font: 14px arial; color: black; border:1px solid gray; } --> </style> <style type="text/css"> <!-- select { background-color: white; font:14px arial; color: black; border:2px solid gray; } --> </style> <?php if (isset($msg)) { ?> <p style="font-weight: bold;"><?=$msg?> <br> <a href="<?=$PHP_SELF?>" class="corpo1">Recarregar Pفgina</a> </p> <?php } ?> <label><center spry:hover="capit1"> <p>CADASTRO DE IMAGENS</p> </center> </label> <br> <br><br> <table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20"> <tr> <td><b class="capit1"><span class="capit1">BOLSOS</span></b></td> <td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td> <td><b class="capit1"><span class="capit1">TIPO</span></b></td> </tr> <form method="post" action="teste.php"> <tr> <td> <select name="bolso" class="formulario"> <option selected="selected"><?php echo $bolso ?> <option>Faca - F <option>Relogio - R <option>Cargo - C <option>Carpinteiro - O </select> </td> <td> <select name="seg" class="formulario"> <option selected="selected"><?php echo $seg ?> <option>Masculino Adulto - MA <option>Feminino Adulto - FA </select> </td> <td> <select name="tipo" class="formulario"> <option selected="selected"><?php echo $tipo ?> <option>Curvo - CV <option>Reto - RT <option>Inclinado - IN </select> </td> </tr> <tr align="center"> <td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value=" GERAR CÓDIGO "> </td> </tr> </form> </table> <p><br> <br><br><br><br><br><br> </p> <p><br> <BR> </p> <hr align="left" size="2" color="#999966"> <br> <table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20"> <tr> <td align="center"> <label for="usuario" class="corpo1" >USUءRIO</label> </td> <td> <input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo $usuario ?>" /> </td> <form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data"> <td align="left"> <label for="codigo" class="corpo1">CسDIGO</label> </td> <td colspan="2"> <input name="codigo" type="text" class="formulario" value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" /> </td> </tr> <tr> <td align="left" class="corpo1"> <label for="title">TÍTULO</label> </td> <td colspan="2"> <input name="title" type="text" class="formulario" id="title" size="60" /> </td> </tr> <tr> <td align="left" class="corpo1"> <label for="photo">ARQUIVO</label> </td> <td colspan="2"> <input name="photo" type="file" class="bot" id="photo" size="30" /> </td> </tr> <tr> <td colspan="3" align="left"> <input type="submit" class="bot" value=" GRAVAR "/> </td> </tr> </table> </form> </body> </html> Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 25, 2011 Ao invés de usar isso: $data = mysql_real_escape_string($data) Use: $data = base64_encode(addslashes($data)); E na hora de mostrar assim: echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem'))); Share this post Link to post Share on other sites
msena 0 Report post Posted May 25, 2011 Nada amigo, axo que estou fazendo algo de forma errado aqui, logo sou pricinpiante. ABaixo o arquivo que era para exibir as imagens. Veja ae como está. Como ele deve ficar? <?php //Inicia sessao e carrega o usuario ob_start(); session_start(); if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto")) { $usuario = strtoupper($_SESSION["usuario"]); } else { // endsession(); header("Location: redir.php"); } $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("meubanco"); $sql = "SELECT * FROM tabela ORDER BY id"; $res = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); while($linha = mysql_fetch_array($res)) { $id = $linha["id"]; $ext = $linha["ext"]; $usuario = $linha["usuario"]; $codigo = $linha["codigo"]; $sequencia = $linha["sequencia"]; $imagem = $linha["imagem"]; echo $imagem . "jpg"; echo $usuario; echo "<br>"; echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem'))); } ?> Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 25, 2011 Primeiro, nao tem como você mostrar um monte de imagens de uma vez. Veja no exemplo que postei: <?php include 'conexao.php'; $Id = (int)$_GET['cod']; $sql = "select foto from tblfuncionario where codfuncionario = $Id"; $exe = mysql_query($sql); header("Content-Type: image/jpg"); echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto'))); ?> É só do campo imagem que você precisa e do campo tipo. Mais nada. Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco. E na hora de mostrar faça: <img src='imagem.php?id=1' /> Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo. Dae no while você faz: <img src='imagem.php?id=<?php echo $res['id']; ?>' /> Share this post Link to post Share on other sites
msena 0 Report post Posted May 26, 2011 Primeiro, nao tem como você mostrar um monte de imagens de uma vez. Veja no exemplo que postei: <?php include 'conexao.php'; $Id = (int)$_GET['cod']; $sql = "select foto from tblfuncionario where codfuncionario = $Id"; $exe = mysql_query($sql); header("Content-Type: image/jpg"); echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto'))); ?> É só do campo imagem que você precisa e do campo tipo. Mais nada. Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco. E na hora de mostrar faça: <img src='imagem.php?id=1' /> Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo. Dae no while você faz: <img src='imagem.php?id=<?php echo $res['id']; ?>' /> Não conseguir resolver a questão. Tem como você diagramar este script de consulta a imagem? Se não puder tudo bem, de qualquer forma, obrigado pela força amigo. Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 26, 2011 Nos mostre como você ta inserindo a imagem, e como está mostrando. Share this post Link to post Share on other sites
msena 0 Report post Posted May 26, 2011 SEGUE OS 2 ARQUIVOS, O QUE INSERIR NO BANCO DE DADOS E O QUE SERIA PARA CONSULTAR E MOSTRAR A IMAGEM CADASTRADA NO BANCO DE DADOS. ARQUIVO QUE INSERI A IMAGEM NO BANCO DE DADOS MYSQL: <?php //Inicia sessao e carrega o usuario ob_start(); session_start(); if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto")) { $usuario = strtoupper($_SESSION["usuario"]); } else { // endsession(); header("Location: redir.php"); } $db_host = 'localhost'; // don't forget to change $db_user = 'user'; $db_pwd = 'senha'; $database = 'banco'; $table = 'tabela'; // use the same name as SQL table if (!mysql_connect($db_host, $db_user, $db_pwd)) die("Nao e Possivel Conectar ao Banco de Dados! "); if (!mysql_select_db($database)) die("Nao e Possivel Selecionar o Banco"); function sql_safe($s) { if (get_magic_quotes_gpc()) $s = stripslashes($s); return mysql_real_escape_string($s); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $title = trim(sql_safe($_POST['title'])); if ($title == '') $title = '(empty title)'; if (isset($_FILES['photo'])) { @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']); if ($imtype == 3) $ext="png"; elseif ($imtype == 2) $ext="jpg"; elseif ($imtype == 1) $ext="gif"; else $ext="pdf"; //$msg = 'Erro: Tipo desconhecido'.$imtype; if (!isset($msg)) { $data = file_get_contents($_FILES['photo']['tmp_name']); $data = mysql_real_escape_string($data); mysql_query("INSERT INTO {$table} SET ext='$ext', title='$title', imagem='$data' , codigo='$codigo', usuario='$usuario' "); $msg = 'Imagem Carregada com Sucesso'; } } elseif (isset($_GET['title'])) $msg = 'Erro: Arquivo nao Carregado'; } ?> <html> <head><title>Cadastro de Imagens</title> <link href="face2.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="white" class="corpo1"> <div id="logo"></div> <style type="text/css"> <!-- input { background-color: "white"; font: 14px arial; color: black; border:1px solid gray; } --> </style> <style type="text/css"> <!-- select { background-color: white; font:14px arial; color: black; border:2px solid gray; } --> </style> <?php if (isset($msg)) { ?> <p style="font-weight: bold;"><?=$msg?> <br> <a href="<?=$PHP_SELF?>" class="corpo1">Recarregar P?gina</a> </p> <?php } ?> <label><center spry:hover="capit1"> <p>CADASTRO DE IMAGENS</p> </center> </label> <br> <br><br> <table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20"> <tr> <td><b class="capit1"><span class="capit1">BOLSOS</span></b></td> <td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td> <td><b class="capit1"><span class="capit1">TIPO</span></b></td> </tr> <form method="post" action="teste.php"> <tr> <td> <select name="bolso" class="formulario"> <option selected="selected"><?php echo $bolso ?> <option>Faca - F <option>Relogio - R <option>Cargo - C <option>Carpinteiro - O </select> </td> <td> <select name="seg" class="formulario"> <option selected="selected"><?php echo $seg ?> <option>Masculino Adulto - MA <option>Feminino Adulto - FA </select> </td> <td> <select name="tipo" class="formulario"> <option selected="selected"><?php echo $tipo ?> <option>Curvo - CV <option>Reto - RT <option>Inclinado - IN </select> </td> </tr> <tr align="center"> <td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value=" GERAR CÓDIGO "> </td> </tr> </form> </table> <p><br> <br><br><br><br><br><br> </p> <p><br> <BR> </p> <hr align="left" size="2" color="#999966"> <br> <table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20"> <tr> <td align="center"> <label for="usuario" class="corpo1" >USU?RIO</label> </td> <td> <input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo $usuario ?>" /> </td> <form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data"> <td align="left"> <label for="codigo" class="corpo1">C?DIGO</label> </td> <td colspan="2"> <input name="codigo" type="text" class="formulario" value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" /> </td> </tr> <tr> <td align="left" class="corpo1"> <label for="title">TÍTULO</label> </td> <td colspan="2"> <input name="title" type="text" class="formulario" id="title" size="60" /> </td> </tr> <tr> <td align="left" class="corpo1"> <label for="photo">ARQUIVO</label> </td> <td colspan="2"> <input name="photo" type="file" class="bot" id="photo" size="30" /> </td> </tr> <tr> <td colspan="3" align="left"> <input type="submit" class="bot" value=" GRAVAR "/> </td> </tr> </table> </form> </body> </html> ARQUIVO DE CONSULTA QUE DEVERIA MOSTRAR A IMAGEM CADASTRADA: <?php //Inicia sessao e carrega o usuario ob_start(); session_start(); if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto")) { $usuario = strtoupper($_SESSION["usuario"]); } else { // endsession(); header("Location: redir.php"); } $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("meubanco"); $sql = "SELECT * FROM tabela ORDER BY id"; $res = mysql_query($sql) or die ("Nãƒo foi possível realizar a consulta ao banco de dados"); while($linha = mysql_fetch_array($res)) { $id = $linha["id"]; $ext = $linha["ext"]; $usuario = $linha["usuario"]; $codigo = $linha["codigo"]; $sequencia = $linha["sequencia"]; $imagem = $linha["imagem"]; echo $imagem . "jpg"; echo $usuario; echo "<br>"; echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem'))); } ?> GRATO Share this post Link to post Share on other sites
Justin Bieber 0 Report post Posted May 26, 2011 você nao fez NENHUMA alteração recomendada. Faça de novo... leia todos os POSTS. AFF ¬¬ Share this post Link to post Share on other sites
Bezerk 3 Report post Posted June 1, 2011 O tipo blob grava um arquivo binário no banco, como o nome diz; Binary Large Object, sendo assim você tem que "recodificar" os bits para poder exibir as imagens. Tenta fazer como o Justin Bieber disse, use a função base64_encode(). Não deixe ele mais nervoso senão ele vai começar a cantar. Share this post Link to post Share on other sites
hinom 5 Report post Posted June 2, 2011 baby baby ohh foi banido ? rss Share this post Link to post Share on other sites