Ir para conteúdo

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 landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

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