Ir para conteúdo

Arquivado

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

dr.x

Buscar imagens em banco de dados

Recommended Posts

Olá pessoal !

 

Como que eu faço para que ao clicar em um link, visualizar o diretório de imagens e salvar o path da mesma em uma tabela ?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, eu estou migrando do desktop para web, e sei que os conceitos e nomenclaturas são bem diferentes, porém preciso apenas clicar em um botão e abrir uma janela onde me mostre um diretório onde eu busco somente com as imagens

Quando eu selecionar o arquivo de imagem , então tenho outro botão de salvar e aí sim eu salvo na base.

Será que eu consegui me expressar direito ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta utilizar o campo tipo FILE... ele vai abrir a janela e você seleciona o arquivo que quiser...

<input type="file" name="imagens" accept="image/*">

Dessa forma, você força ele reconhecer apenas imagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ôh amigão, obrigado e perdoe a minha ignorância, é que é tudo bem novo pra mim...

 

Vejo que és bem entendido da matéria. Estou testando localmente com wampserver. Pergunto: Tem como testar upload localmente ?

 

Por exemplo: Através de um painel de controle, o usuário faz o aupload da imagem buscando-a localmente e salvando-a na pasta por exemplo "banners", e ao carregar o index.php, então busca a imagem na pasta "banners" ?

 

Será que é necessário banco de dados ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Do contrário você vai armazenar o caminho da imagem para exibi-la depois onde ? também pode ser gravado num txt. Mais recomando banco de dados.

 

Da uma olhada nesse artigo do amigo Thiago.

 

Upload de Arquivos – Como tudo funciona - Thiago Belem / Blog

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alaerte !

 

Esse exemplo é exatamente o que eu preciso, porém dá erro. Estou tratando localmente.

 

Dá uma olhadina.

 

Desde já agradeço.

 

 

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro de usuário</title>
</head>
<body>
<h1>Cadastro de Usuário</h1>
<form action="" method="post" enctype="multipart/form-data" name="cadastro" >
Nome:<br />
<input type="text" name="nome" /><br /><br />
Email:<br />
<input type="text" name="email" /><br /><br />
Foto de exibição:<br />
<input type="file" name="foto" /><br /><br />
<input type="submit" name="cadastrar" value="Cadastrar" />
</form>
</body>
</html>
<?php
// Conexão com o banco de dados
$conn = @mysql_connect("localhost", "usuario", "") or die ("Problemas na conexão.");
$db = @mysql_select_db("db_banco", $conn) or die ("Problemas na conexão");
// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['cadastrar']) {
// Recupera os dados dos campos
$nome = $_POST['nome'];
$email = $_POST['email'];
$foto = $_FILES["foto"];
// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {
// Largura máxima em pixels
$largura = 450;
// Altura máxima em pixels
$altura = 280;
// Tamanho máximo do arquivo em bytes
$tamanho = 1000; <<<< aquí
// Verifica se o arquivo é uma imagem
if(!preg_match("/^image/(jpeg|jpg|png|gif|bmp)$/", $foto["type"])){
$error[1] = "Isso não é uma imagem."; <<<< aquí
}
// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["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($foto["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", $foto["name"], $ext);
// Gera um nome único para a imagem
$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde ficará a imagem. obs: neste caso localmente.
$caminho_imagem = "C:/wamp/www/upload-2/imagens/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);
// Insere os dados no banco
$sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')");
// 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 . "";
}
}
}
}
?>
<?php
/*
// Seleciona todos os usuários
$sql = mysql_query("SELECT * FROM banners ORDER BY nome");
// Exibe as informações de cada usuário
while ($usuario = mysql_fetch_object($sql))
{
// Exibimos a foto
echo "< img src='C:/wamp/www/upload-2/imagens/".$usuario->foto."' alt='Foto de exibição' />< br />";
// Exibimos o nome e email
echo "Nome: " . $usuario->nome . "< br />";
echo "Email: " . $usuario->email . "< br />< br />";
}
*/
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Laerte !

 

Na verdade, localmente estou fazendo o upload. Digo, da origem para o destino.

O único problema é que não está gravando na tabela.

Testei as variáveis e está retornando corretamente, porém o insert não insere na tabela.

Será que está faltando mais alguma coisa ?

 

// Insere os dados no banco
$sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire os " @ " (arrobas) do início das linhas de conexão, pois eles podem inibir um erro de conexão com a base de dados e você ficará a ver navios.

 

Adicione ao final de sua quero, a função

mysql_error();

Que irá apresentar algum erro na hora da inserção. Porém, procure estudar sobre MSQLi ou PDO, pois o mysql_ foi depreciado e não é viável utilizá-lo.

$sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')")or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, agora você já tem a causa do problema, o que fazer ? Corrigir.

 

Você deve estar passando mais valores do que a quantidade de campo na tabela, não acha não ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza Alaerte.

 

Mudei para PDO e funcionou legal o insert.

 

Com o wampserver 2.5 muda alguma coisa em relação ao mysql, msqli ou PDO ? Esta versão somente aceita PDO e msqli ?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preste atenção na versão do PHP, a classe está disponível desde a versão 5. Mais para ser sincero, eu nunca utilizei qualquer tipo de pacote pré-configurado para servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos dizer que eu queira somente PDO. Então eu tenho que desabilitat no php.config os pacotes mysql e mysqli ?

 

E em caso contrário, eu queira trabalhar somente com mysql, então eu desabilito os dois: mysqli e pdo ?

 

É que sou novo em php. Estou migrando de desktop para web e as concepções são bem diferentes, porém a lógica não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Macacos me chicoteiem. NÃO FAÇA ISSO ! pelo amor de Deus.

 

Cara sugiro você estudar muuuuuito a linguagem e "abstrai" essa ideia de sua mente, isola, queima, fora de possibilidade.

 

As extensões MySQL_* estão depreciadas e você só poderá usar mysqli ou PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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