Ir para conteúdo

POWERED BY:

Arquivado

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

João Paulo Hildebrand

UPDATE imagem banco de dados

Recommended Posts

Fala galera, boa tarde!

Teriam como me ajudar na seguinte situação:

 

Tenho uma página para alterar os registros no banco de dados, consigo alterar todos os campos de texto normalmente, a única coisa que não consigo é a imagem.

No banco eu apenas gravo o caminho da imagem. A imagem em si é salva em uma pasta no servidor.

 

Segue abaixo meus códigos:

página alterar.php

 

 

 

<?php
include("../Connections/conexao_banco_agenciaconectal.php");
?>
<?php
$id = $_GET["id"];
$sql = mysql_query("select * from noticias where id='$id'");
$exibe = mysql_fetch_assoc($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...ransitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastrar Notícia</title>
<link rel="stylesheet" href="css/style_admin.css" />
</head>
<body>
<div id="alinhamento_cadastro">
<h1>Cadastro de Postagem</h1>
<form action="metodo_alterar.php" method="post" enctype="multipart/form-data" name="cadastro" >
<input name="id" type="hidden" value="<?php echo $exibe["id"] ?>" />
<input type="text" name="titulo" class="titulo" placeholder="Título da Postagem" required="required" value="<?php echo $exibe["titulo"] ?>"/><br />
<input type="text" name="resumo" class="resumo" placeholder="Resumo da Postagem" required="required" value="<?php echo $exibe["resumo"] ?>"/><br />
<input type="text" name="autor" class="autor" placeholder="Autor da Postagem" required="required" value="<?php echo $exibe["autor"] ?>"/><br />
<input type="date" name="data" class="data" placeholder="Data da Postagem" required="required" value="<?php echo $exibe["data"] ?>"/><br />
<span class="titulo_categoria">Categoria:</span>
<input type="radio" name="categoria" value="noticias_em_geral" class="radio_btn" />Notícias em Geral <br />
<input type="radio" name="categoria" value="tecnologia" class="radio_btn2" />Tecnologia
<input name="foto" type="hidden" />
<input type="file" name="foto" class="foto" value="<?php echo $exibe["foto"] ?>"/><br />
<textarea name="texto" class="texto" placeholder="Texto da Postagem" required="required"><?php echo $exibe["noticia"] ?></textarea><br />
<button value="Cadastrar" name="cadastrar" class="cadastrar" id="upload">Cadastrar Notícia</button>
<button value="Resetar" name="resetar" class="resetar">Resetar Notícia</button>
</form>
</div><!--alinhamento-->
</body>
</html>

 

 

metodo_alterar.php

 

 

 

<?php
include("../Connections/conexao_banco_agenciaconectal.php");
?>
<?php
$id = $_POST["id"];
$titulo = $_POST["titulo"];
$resumo = $_POST["resumo"];
$autor = $_POST["autor"];
$data = $_POST["data"];
$categoria = $_POST["categoria"];
$foto = $_FILES["foto"];
$noticia = $_POST["texto"];
if(mysql_query("update noticias set titulo='$titulo', resumo='$resumo', autor='$autor', data='$data', categoria='$categoria', imagem='$foto', noticia='$noticia' where id='$id'")){
echo "Postagem Alterada com Sucesso! <br> <a href='gerenciar.php'>Voltar</a>";
exit;
}else{
echo mysql_error();
exit;
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

E o que acontece com a foto que já existia? Ela não deveria ser excluída na alteração?

 

Olha eu fiz um print de um arquivo teste.psd que enviei para o $_FILE da pagina metodo_alterar.php e veja o que recebemos:

Array ( 
[name] => Teste.psd 
[type] => application/octet-stream 
[tmp_name] => C:\Program Files (x86)\EasyPHP-12.1\tmp\phpB4B3.tmp 
[error] => 0 
[size] => 1200017 
) 

A resposta é um array com cinco posições e valores (name, type, tmp_name, error, size);

 

Agora raciocína comigo, você está tentando colocar o array $_FILE diretamente assim (imagem='$foto') no banco, que muito provavelmente é um tipo varchar, pelo menos imagino que seja por armazenar o path da imagem.

 

Na verdade você precisará manipular novamente os dados desta nova imagem que virá pelo $_FILE, depois abrir a conexão com o banco, realizar o Update no caminho antigo e salvar a nova imagem.

 

Lembrando-se de apagar a velha imagem, se este for o caso.

 

Imaginei esta lógica para o problema, o que acha?

 

Espero que ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá angelorubin!

 

Primeiramente muito obrigado pela dica!!!!

 

 

A lógica está correta, mas como disse sou leigo em programação, estou me arriscando mesmo.

 

Eu tenho a página cadastra.php, que leva os dados para metodo.php - FUNCIONA PERFEITAMENTE, o envio da imagem tambe.

Tenho a página excluir.php - funciona perfeitamente

A página altera.php funciona perfeitamente os campos de texto, somente a imagem não muda.

 

Sim, estou cadastrando somente o patch no banco de dados. As imagens são salvas no servidor.

 

Poderia me dar uma força? Vou enviar todos os arquivos que possuo ...

 

 

cadastrar.php com a action = metodo.php

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastrar Notícia</title>
<link rel="stylesheet" href="css/style_admin.css" />
</head>
<body>
<div id="alinhamento_cadastro">
<h1>Cadastro de Postagem</h1>
<form action="metodo.php" method="post" enctype="multipart/form-data" name="cadastro" >
<input type="text" name="titulo" class="titulo" placeholder="Título da Postagem" required="required" /><br />
<input type="text" name="resumo" class="resumo" placeholder="Resumo da Postagem" required="required" /><br />
<input type="text" name="autor" class="autor" placeholder="Autor da Postagem" required="required"/><br />
<input type="date" name="data" class="data" placeholder="Data da Postagem" required="required" /><br />
<span class="titulo_categoria">Categoria:</span>
<input type="radio" name="categoria" value="Notícias em Geral" class="radio_btn" />Notícias em Geral <br />
<input type="radio" name="categoria" value="Tecnologia" class="radio_btn2" />Tecnologia
<input type="file" name="foto" class="foto" /><br />
<textarea name="texto" class="texto" placeholder="Texto da Postagem" required="required"></textarea><br />
<button value="Cadastrar" name="cadastrar" class="cadastrar" id="upload">Cadastrar Notícia</button>
<button value="Resetar" name="resetar" class="resetar">Resetar Notícia</button>
</form>
</div><!--alinhamento-->
</body>
</html>

 

metodo.php

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
// Conex�o com o banco de dados
$conn = @mysql_connect("localhost", "usuario_joao", "250627jp") or die ("Impossível se Conectar");
$db = @mysql_select_db("agencia_conectal_blog", $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
$titulo = $_POST['titulo'];
$resumo = $_POST['resumo'];
$autor = $_POST['autor'];
$data = $_POST['data'];
$radio = $_POST["categoria"];
$foto = $_FILES["foto"];
$texto = $_POST['texto'];
// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {
// Largura m�xima em pixels
$largura = 2000;
// Altura m�xima em pixels
$altura = 2000;
// Tamanho m�ximo do arquivo em bytes
$tamanho = 100000;
// Verifica se o arquivo � uma imagem
if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto["type"])){
$error[1] = "Não é uma imagem válida";
}
// 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
$caminho_imagem = "upload_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 noticias VALUES ('', '".$titulo."', '".$resumo."', '".$autor."', '".$data."', '".$radio."', '".$nome_imagem."', '".$texto."')");
// Se os dados forem inseridos com sucesso
if ($sql){
echo "Postagem Realizada com Sucesso! <br> <a href='gerenciar.php'>Gerenciar Postagens</a>";
}
}
// Se houver mensagens de erro, exibe-as
// if (count($error) != 0) {
// foreach ($error as $erro) {
// echo $erro . "<br />";
// }
// }
}
}
?>
</body>
</html>

 

deleta.php

 

 

 

<?php require_once('../Connections/conexao_banco_agenciaconectal.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
if ((isset($_GET['id'])) && ($_GET['id'] != "")) {
$deleteSQL = sprintf("DELETE FROM noticias WHERE id=%s",
GetSQLValueString($_GET['id'], "int"));
mysql_select_db($database_conexao_banco_agenciaconectal, $conexao_banco_agenciaconectal);
$Result1 = mysql_query($deleteSQL, $conexao_banco_agenciaconectal) or die(mysql_error());
$deleteGoTo = "gerenciar.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
$colname_deleta = "-1";
if (isset($_GET['id'])) {
$colname_deleta = $_GET['id'];
}
mysql_select_db($database_conexao_banco_agenciaconectal, $conexao_banco_agenciaconectal);
$query_deleta = sprintf("SELECT * FROM noticias WHERE id = %s", GetSQLValueString($colname_deleta, "int"));
$deleta = mysql_query($query_deleta, $conexao_banco_agenciaconectal) or die(mysql_error());
$row_deleta = mysql_fetch_assoc($deleta);
$totalRows_deleta = mysql_num_rows($deleta);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
<?php
mysql_free_result($deleta);
?>

 

altera.php que leva a action metodo_altera.php

 

 

 

<?php
include("../Connections/conexao_banco_agenciaconectal.php");
?>
<?php
$id = $_GET["id"];
$sql = mysql_query("select * from noticias where id='$id'");
$exibe = mysql_fetch_assoc($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...ransitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastrar Notícia</title>
<link rel="stylesheet" href="css/style_admin.css" />
</head>
<body>
<div id="alinhamento_cadastro">
<h1>Cadastro de Postagem</h1>
<form action="metodo_alterar.php" method="post" enctype="multipart/form-data" name="cadastro" >
<input name="id" type="hidden" value="<?php echo $exibe["id"] ?>" />
<input type="text" name="titulo" class="titulo" placeholder="Título da Postagem" required="required" value="<?php echo $exibe["titulo"] ?>"/><br />
<input type="text" name="resumo" class="resumo" placeholder="Resumo da Postagem" required="required" value="<?php echo $exibe["resumo"] ?>"/><br />
<input type="text" name="autor" class="autor" placeholder="Autor da Postagem" required="required" value="<?php echo $exibe["autor"] ?>"/><br />
<input type="date" name="data" class="data" placeholder="Data da Postagem" required="required" value="<?php echo $exibe["data"] ?>"/><br />
<span class="titulo_categoria">Categoria:</span>
<input type="radio" name="categoria" value="Notícias em Geral" class="radio_btn" />Notícias em Geral <br />
<input type="radio" name="categoria" value="Tecnologia" class="radio_btn2" />Tecnologia
<input name="foto" type="hidden" value="upload_imagens/<?php echo $exibe["imagem"] ?>"/>
<input type="file" name="foto" class="foto"/><br />
<textarea name="texto" class="texto" placeholder="Texto da Postagem" required="required"><?php echo $exibe["noticia"] ?></textarea><br />
<button value="Cadastrar" name="cadastrar" class="cadastrar" id="upload">Cadastrar Notícia</button>
<button value="Resetar" name="resetar" class="resetar">Resetar Notícia</button>
</form>
</div><!--alinhamento-->
</body>
</html>

 

metodo_altera.php

 

 

 

<?php
include("../Connections/conexao_banco_agenciaconectal.php");
?>
<?php
$id = $_POST["id"];
$titulo = $_POST["titulo"];
$resumo = $_POST["resumo"];
$autor = $_POST["autor"];
$data = $_POST["data"];
$categoria = $_POST["categoria"];
$foto = $_FILES["foto"];
$noticia = $_POST["texto"];
if(mysql_query("update noticias set titulo='$titulo', resumo='$resumo', autor='$autor', data='$data', categoria='$categoria', imagem='$foto', noticia='$noticia' where id='$id'")){
echo "<script>
window.location.href='gerenciar.php';
</script>";
exit;
}else{
echo mysql_error();
exit;
}
?>

 

 

 

Se puder me dar essa força, ficaria muito grato a você!!!!! ou a quem conseguir solucionar esse meu problema ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo assim como no cadastro voce tem que refazer o upload da foto para o servidor e aconselho que grave somente o nome da imagem o caminho você sete manualmente na tag, quando voce refazer o upload pode comparar o nome da imagem atual com o nome da que vai ser enviada sendo assim voce apaga aquele arquivo por isso é bom armazenar somente o nome da imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe-me entender melhor o seu problema, as entradas de dados da sua página de alteração estão funcionando perfeitamente, só a imagem que não está dando update no banco de dados? Se sim, quando você seleciona uma nova imagem e submete à alteração o campo file passa um valor vazio ao seu banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow cara, na verdade não sei te dizer ... desculpa. Mas o meu código é este postado acima. Altero todos os campos de texto e radio normalmente, porém o campo file não muda de maneira nenhuma.

A Alteração é feita na página altera.php que submete ao metodo_altera.php (ambas página estão acima)

 

Depois que eu faço as alterações que consigo, como disse campo de texto e radio, quando tento visualizar a imagem que está cadastranda naquela ID aparece a seguinte página:

 

 

Objeto não encontrado!

A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro.

Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.

Error 404 localhost
17/02/2013 21:40:32
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhei o seu código e encontrei uma possível causa de não estar realizando a alteração da imagem na página metodo_altera.php, para resolver basta alterar a variável $foto para a maneira abaixo

 

$foto = $_FILES['foto']['name'];

 

Se resolver o seu problema reputa ai, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow amigo tentei e não funcionou :/// Continua aparecendo a mensagem

 

 

 

 

Objeto não encontrado!

A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro.

Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.

Error 404 localhost
17/02/2013 22:01:00
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1


Mas perae, a URL mudou pelo menos ....

 

Agora está assim http://localhost/meusite/admin/upload_imagens/carregando3[1].gif

 

antes estava ACHO: http://localhost/meusite/admin/upload_imagens/ARRAY

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow amigo tentei e não funcionou :/// Continua aparecendo a mensagem

 

 

 

Mas perae, a URL mudou pelo menos ....

 

Agora está assim http://localhost/meusite/admin/upload_imagens/carregando3[1].gif

 

antes estava ACHO: http://localhost/meusite/admin/upload_imagens/ARRAY

Isso amigo, se voce nao declarar o parametro name na variavel dessa forma $_FILES['nomedocampo']['name'] Nao vai identificar o nome da imagem selecionada e vai retornar ARRAY para o seu banco de dados!

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.