Ir para conteúdo
Fórum Script Brasil
  • 0

Inserir e exibir imagem de uma bd


Vitor Santos

Pergunta

Estou neste momento a construir o back-office de um site da locaweb, e surgiu-me uma dúvida que parece algo complicada.

Tenho uma tabela chamada definicoes que tem, entre outros, um campo imagem, e quando eu insiro dados coloco o caminho da imagem procurando por ela no meu pc, até aqui tudo bem, mas eu queria saber como aceder a essas imagens quando lista-se todos os dados dessa tabela, terei primeiramente de ter uma opção para fazer upload das imagens para o servidor web? Se sim, quando inserir já não necessito de colocar imagem alguma do meu computador?

Agradeço qualquer resposta que me possa elucidar.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Para fazer upload de imagens, você vai ter que usar o campo do tipo FILE no formulário (input type=file). Dê uma lida sobre ele, é bem simples...

Depois, para acesar no PHP você utiliza a variável $_FILES[] (array com informações do campo e da imagem), com isso, a imagem será copiada para o servidor mas será temporária aí é só você fazer uma cópia dela para a pasta correta e a imagem será copiada para o servidor onde a página está hospedada... e no banco você salva apenas a pasta e o nome da imagem.

Dê uma lida sobre este tipo de campo, qualquer dúvida é só perguntar.

Abraços

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0
Para fazer upload de imagens, você vai ter que usar o campo do tipo FILE no formulário (input type=file). Dê uma lida sobre ele, é bem simples...

Depois, para acesar no PHP você utiliza a variável $_FILES[] (array com informações do campo e da imagem), com isso, a imagem será copiada para o servidor mas será temporária aí é só você fazer uma cópia dela para a pasta correta e a imagem será copiada para o servidor onde a página está hospedada... e no banco você salva apenas a pasta e o nome da imagem.

Dê uma lida sobre este tipo de campo, qualquer dúvida é só perguntar.

Abraços

Agradeço muito a resposta,

eu já não vinha aqui há algum tempo e apesar do teu registo ser recente ao olhar para os posts em php vejo-te a tentar ajudar toda a gente, e dou-te bastante valor por isso, penso que falo em nome de toda a comunidade.

eu já tinha pesquisado e cheguei mais o menos a essa conclusão, mas agora com a confirmação vou tentar ver se consigo fazer, dado que após isso poderei concluir este site.

Link para o comentário
Compartilhar em outros sites

  • 0

Parece que estou perto de conseguir efectuar a inserção no banco de dados, mas tenho um erro a página inserirdefinicao.php fica em branco e não insere nada, vou colocar os dois códigos pois assim também ajudo quem tiver as mesmas dúvidas.

inserirdefinicao.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
session_start();
include("../configuracao/conexao.php");
include ("menu.php");
if($_SESSION["admin"]=="1"){
?>
<meta http-equiv="Content-Language" content="pt-br">

<form action="inserirdefinicao2.php" method="post" name="definicao" enctype="multipart/form-data"  >
  <div align="center">
    <center>
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100" height="94">
      <tr>
        <td width="100%" height="4"><b><font face="Arial" size="1">Titulo:</font></b></td>
      </tr>
      <tr>
        <td width="100%" height="15"><font face="Arial">
        <input name="titulo" size="45" style="font-family: Arial; font-size: 8 pt; color: #000000; font-weight: bold; border: 3px double #EBEBEB; padding: -4"></font></td>
      </tr>
      <tr>
        <td width="100%" height="12"><b><font face="Arial" size="1">Imagem:</font></b></td>
      </tr>
      <tr>
        <td width="100%" height="20"><font face="Arial">
        <input name="imagem" size="45" type="file" style="font-family: Arial; font-size: 8 pt; color: #FF0000; font-weight: bold; border: 3px double #EBEBEB; padding: -4"></font></td>
      </tr>
      <tr>
       <td width="100%" height="12"><b><font face="Arial" size="1">Definicao:</font></b></td>
      </tr>
      <tr>
        <td width="100%" height="20"><font face="Arial">
 <textarea name="texto" cols="100" rows="10" style="font-family: Arial; font-size: 8 pt; color: #000000; font-weight: bold; border: 3px double #EBEBEB; padding: -4"></textarea>
 </font></td>
      </tr>
      <tr>
        <td width="100%" height="19"><hr color="#FF0000" size="1" /></td>
      </tr>
      <tr>
        <td width="100%" height="24">
        <p align="center">
        <input type="submit" value="Inserir" style="font-family: ARIAL; font-size: 8 pt; font-weight: bold; border: 3px double #FF0000; padding: -4; background-color: #FFFFFF"></td>
      </tr>
    </table>
    </center>
  </div>
</form>
<? include "infor.php";?>
<?php
}
else
{
echo "&lt;script>location.href='login.htm'</script>";
}
?>
inserirdefinicao2.php
<?php
// Conexão com a base de dados
$conn = @mysql_connect("localhost", "*****", "*****") or die ("Problemas na conexão.");
$db = @mysql_select_db("*****", $conn) or die ("Problemas na conexão");

// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['Inserir']) {

    // Recupera os dados dos campos
    $titulo = $_POST['titulo'];
    $imagem = $_FILES['imagem'];
    $texto = $_POST["texto"];

    // Se a foto tiver sido selecionada
    if (!empty($imagem["name"])) {

        // Largura máxima em pixels
        $largura = 150;
        // Altura máxima em pixels
        $altura = 180;
        // Tamanho máximo do arquivo em bytes
        $tamanho = 1000;

        // Verifica se o arquivo é uma imagem
        if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $imagem["type"])){
            $error[1] = "Isso não é uma imagem.";
            } 

        // Pega as dimensões da imagem
        $dimensoes = getimagesize($imagem["tmp_name"]);

        // Verifica se a largura da imagem é maior que a largura permitida
        if($dimensoes[0] > $largura) {
            $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
        }

        // Verifica se a altura da imagem é maior que a altura permitida
        if($dimensoes[1] > $altura) {
            $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
        }

        // Verifica se o tamanho da imagem é maior que o tamanho permitido
        if($imagem["size"] > $tamanho) {
                $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
        }

        // Se não houver nenhum erro
        if (count($error) == 0) {

            // Pega extensão da imagem
            preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $imagem["name"], $ext);

            // Gera um nome único para a imagem
            $nome_imagem = md5(uniqid(time())) . "." . $ext[1];

            // Caminho de onde ficará a imagem
            $caminho_imagem = "imagens/" . $nome_imagem;

            // Faz o upload da imagem para seu respectivo caminho
            move_uploaded_file($imagem["tmp_name"], $caminho_imagem);

            // Insere os dados no banco
            $sql = mysql_query("INSERT INTO definicoes VALUES ('', '".$titulo."', '".$nome_imagem."', '".$texto."')");

            // Se os dados forem inseridos com sucesso
            if ($sql){
                echo "Você foi cadastrado com sucesso.";
            }
        }

        // Se houver mensagens de erro, exibe-as
        if (count($error) != 0) {
            foreach ($error as $erro) {
                echo $erro . "<br />";
            }
        }
    }
}
?>

Ajudem-me por favor, assim também fica o código direitinho para todos usarem futuramente

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Victor!

Obrigado! ^_^

Eu ainda estou aprendendo também, e uso o fórum tanto para aprender quanto para ajudar no que posso. Acredito que todo mundo tem algo à contribuir, não importa o quanto, mas sempre tem!

Quanto ao seu código, o que pude ver testando, é que o problema está no if($_POST['Inserir']). O correto seria apenas if($_POST). Motivo? A variável $_POST possui informações sobre o formulário, e cada índice corresponde à um campo do formulário (no caso input, select, textarea, files, etc), mas não existe nenhum campo no formulário com id/name 'Inserir', apenas o submit tem value 'Inserir', mas é necessário que o name/id seja 'Inserir'.

Utilizando apenas if($_POST) já é o suficiente para verificar se veio as informações, já que a variável somente irá existir se o formulário foi postado. Caso queira realmente saber qual o tipo de ação que o usuário está fazendo (inserindo, alterando), você pode criar um campo do tipo hidden e com o value 'Inserir' ou 'Alterar', assim você consegue fazer o if($_POST['Inserir']).

Alterando isto, creio que já deva funcionar. Não pude testar todo o script pois não possuo o banco, mas caso apareça outro erro, poste que iremos te ajudar.

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...