Ir para conteúdo

POWERED BY:

Arquivado

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

jonny255d

Pegar imagem do banco com php e mysql

Recommended Posts

eae pessoal ,

 

preciso de uma ajuda , tenho um codigo que salva a imagem no banco de dados como longblob , porem quando eu pucho a imagem do banco , ela vem totalmente descriptografada , toda bagunçada

 

eu uso esse codigo para puchar

 

$resultado = "SELECT * FROM usuario WHERE userlogin = '$criptoNomeUsuario' AND ativo = 'sim'";
esse codigo pucha todos os resultados do banco perfeitamente ,
nome , id , data e tudo mais , porem quando coloco a imagem , ela da erro e não sei o pq
uso este codigo para gravar os dados na sessao:
$fotoPessoa = $listagem ["fotouser"];
$_SESSION['fotouser'] = $fotoPessoa;

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom , gostaria de guardar a foto dentro do banco de dados e o unico jeito que eu consegui fazer ate agora foi com blob , tem algum tuto que mostre como fazer ?? a ideia erra guardar a foto do usuario , tipo foto de perfil , e depois pucha-la para mostrar na tela de usuario

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, guardar imagem em banco não é uma boa prática.

 

O correto é guardar apenas o nome da imagem, e guardar a imagem em uma pasta direcionada apenas para isso.

 

Para exibir a foto depois, basta chamá-la como no exemplo abaixo:

<img src ="pasta/da/imagem/<?php echo $row['imagem']; ?>" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom pessoal eu criei assim :

 

index.php

<form action="upload.php" method="POST" enctype="multipart/form-data">
 foto : <input type="file" required name="arquivo">
 <input type="submit" value="enviar">
 </form>

upload.php

<?php

include 'conexao.php';

$msg = false;

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

$extensao = strtolower(substr($_FILES['arquivo']['name'], -4));
$novo_nome = md5(time()) . $extensao;
$diretorio = "img/";

move_uploaded_file($_FILES['arquivo']['tmp_name'], $diretorio.$novo_nome);

$sql_enviar_noticia = mysqli_query($conecta, "INSERT INTO arquivo (codigo, arquivo) VALUES (null, '$novo_nome')");



 header("location:index.php");


?>

oque acham ?

 

mas nao estou conseguindo criar um esquema para puchar a imagem do diretorio e tambem nao estou conseguindo criar uma variavel que retorne Mensagens da pagina upload.php para a index.php como erro ou upload bem sucedido como <?php if($msg != false) echo "<p> $msg </p>"; ?>

 

mais alguma dica pessoal ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tranquilo aew??? Então eu tenho o que você precisa, sigua esse link do meu GitHub

https://github.com/ckcesar/UploadsImagens

É só baixar o projeto e colocar pra rodar na sua máquina, esta bem detalhado o upload das imagens, como busca do diretório.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tranquilo aew??? Então eu tenho o que você precisa, sigua esse link do meu GitHub

https://github.com/ckcesar/UploadsImagens

É só baixar o projeto e colocar pra rodar na sua máquina, esta bem detalhado o upload das imagens, como busca do diretório.

 

Espero ter ajudado.

 

eae man , entao , preciso que ela guarde a foto no banco e que depois jogue a foto denovo no meu html quando eu solicitar , esse esquema que vc mandou pra min n deu muito certo pra min :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, como o colega DSerma disse, não é uma boa prática.

 

Como sempre existe uma possibilidade... você pode encodar a imagem em base64 e inserir a "stringona"... /* isso não é legal */

 

Não aconselho utilizar por inúmeros motivos!!

Se atente, NÃO é um conselho... é uma possibilidade!

 

O ideal é você otimizar as suas imagens, upar-las na sua pasta de imagens ou cloud storage, e inserir apenas o nome da imagem no seu banco de dados.

 

Com isso, quando você requerer a imagem, você fará como o colega DSerma também disse.

 

Abraço!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, como o colega DSerma disse, não é uma boa prática.

 

Como sempre existe uma possibilidade... você pode encodar a imagem em base64 e inserir a "stringona"... /* isso não é legal */

 

Não aconselho utilizar por inúmeros motivos!!

Se atente, NÃO é um conselho... é uma possibilidade!

 

O ideal é você otimizar as suas imagens, upar-las na sua pasta de imagens ou cloud storage, e inserir apenas o nome da imagem no seu banco de dados.

 

Com isso, quando você requerer a imagem, você fará como o colega DSerma também disse.

 

Abraço!

 

 

 

opa , eu intendi isso man, e que não me expresei bem no comentario de cima , bom eu dei uma pesquisada e tem bastante gente falando a mesma coisa

 

index.php


<h1> up </h1>

<?php if($msg != false) echo "<p> $msg </p>"; ?>

<form action="upload.php" method="POST" enctype="multipart/form-data">
 foto : <input type="file" required name="arquivo">
 <input type="submit" value="enviar">
 </form>

 
 <img src ="img/<?php echo $row['arquivo']; ?>" />

upload.php

<?php

include 'conexao.php';

$msg = false;

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

$extensao = strtolower(substr($_FILES['arquivo']['name'], -4));
$novo_nome = md5(time()) . $extensao;
$diretorio = "img/";

move_uploaded_file($_FILES['arquivo']['tmp_name'], $diretorio.$novo_nome);

$sql_enviar_noticia = mysqli_query($conecta, "INSERT INTO arquivo (codigo, arquivo) VALUES (null, '$novo_nome')");


 if(!mysqli_query($sql_enviar_noticia)){
 
 
 $msg = "Falha ao enviar o arquivo";
 }
 else
 
 {$msg = "Arquivo enviado com sucesso";}

 header("location:index.php");
}

?>

oq vcs acham deste codigo ?? porem nao consegui puchar a imagem ainda do banco e nem deletala do banco junto com a imagem do diretorio , e a variavel $msg tambem n funfo :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer a variavel $msg funcionar com session , ficou perfeito , agora falta o arquivo deletar , do arquivo salvar fica facil criar o update mas o del nao tenho a minima ideia de como deletar do banco e do diretorio , isso eu nunca fiz , alguem pode me ajudar por favor ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para deletar o arquivo do diretório use no PHP unlink('Aqui passa o endereço onde encontra a imagem');

 

cesar , eu nao tenho muita experiencia com isso pode me dar uma ajuda com o codigo ??

<?php 

include "conexao.php";

$mostraDados = mysqli_query($conecta, "SELECT * FROM arquivo WHERE codigo = 1") or die (mysqli_error());
 unlink('img/');

?>

eu criei assim , mas n funcionou bem , como eu faço ?

 

por exemplo ai em cima quero deletar a imagem com o codigo 1 , do banco ela desaparece mas da pasta n

Compartilhar este post


Link para o post
Compartilhar em outros sites
unlink('caminho/para/a/imagem/e/o/nome/dela.jpg');

Você deve passar TODO o caminho da imagem, incluindo o nome dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites
unlink('caminho/para/a/imagem/e/o/nome/dela.jpg');

Você deve passar TODO o caminho da imagem, incluindo o nome dela.

 

<?php 

include "conexao.php";



$query1 = mysqli_query($conecta,"SELECT * FROM arquivo WHERE codigo = 10")or die (mysqli_error());
                                  
                                while($data=mysqli_fetch_array($query1))
                                {
                                    $delete=$data['file'];
                                    unlink("img/$delete");

                                }
                                $query = mysqli_query($conecta,"DELETE FROM arquivo WHERE codigo = 11")or die (mysqli_error());
                               
                                    if($result==TRUE)
                                    {

                                       $_SESSION['msg'] = "deletado";
                                        header("Location:index.php");
                                        exit;

                                    }
                                    else
                                    {
                                        $_SESSION['msg'] = "nao deleto";
                                        header("Location:index.php");
                                        exit;
                                    }
                            

?>

criei esse codigo mas quando chega na parte de apagar o diretorio , mostra acesso negado , alguem sabe resolver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deu as devidas permissões na pasta?
A pasta e o seu conteúdo precisam ter permissões de gravação, edição e exclusão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você passou o endereço certo aonde encontra a sua imagem e não deletou?

 

testa colocar manual pra fazer um teste.

 

unlink('caminho/imagem.png');

 

Essa sua váriavel retorna o endereço correto?

$delete=$data['file'];
unlink("aqui tenta colocar a url toda da sua aplicação/img/$delete");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigos!!!

 

Aproveitando o tópico, estou com problema para buscar as imagens no banco. Tenho um página chamada estadios_getdata.php onde tenho o SELECT dos dados, tenho também uma página chamada estadios_datatable_consulta.php que mostra as informações na tela, porém não consigo mostrar a imagem, quero colocá-la dentro de uma div, conforme abaixo:

 

<div class="figure_estadio">
<img src="./images/upload/estadios/<?php echo $imagem_nome ?>" />
</div>
O que estou fazendo de errado?
Desde já, obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar da imagem fica aquele ícone de que ali deveria ter uma imagem, se tento abrir a imagem em outra aba da o seguinte erro:

 

Not Found

The requested URL /Scouts/images/upload/estadios/imagem/ was not found on this server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por ILR master
      Fala pessoal.

      Não estou conseguindo converter .jpg para .webp
       
      Alguém pode me ajudar? Segue código abaixo:
       
      $fotob = 'imagem.jpg'; $foto = explode('.',$fotob); $f = $foto[0]; $forigem = $fotob; $origem = 'fotos_noticias/'.$forigem; $fdestino = $f.'.webp'; $destino = 'fotos_capa/'.$fdestino; $imagem = imagecreatefromjpeg($origem); $imgX = imagesx($imagem); $imgY = imagesy($imagem); $novaImagem = imagecreatetruecolor($imgX, $imgY); imagealphablending($novaImagem, false); imagesavealpha($novaImagem, true); imagecopyresampled($novaImagem, $imagem, 0, 0, 0, 0, $imgX, $imgY, $imgX, $imgY); imagewebp($novaImagem, $destino, 100); imagedestroy($imagem); // Importante para limpar o cache
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.