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

Atualização Banco de Dados


Joao Paulo Hildebrand

Pergunta

Fala galera, boa tarde!

Estou com um problema e não consigo resolver de maneira nenhuma. Tenho os códigos e sei a lógica, mas sou bem leigo em PHP MySql, então está muito difícil para mim. Poderiam me ajudar?

Quero fazer o update de uma imagem no banco de dados. Consigo inserir e deletar textos e imagem tranquilamente no banco. Também consigo alterar textos no banco, mas a imagem não consigo de jeito nenhum ... Estou salvando apenas o Patch no banco, a imagem em si está no servidor (por enquanto local).

Páginas: Cadastrar.php que submete metodo_cadastro.php // alterar.php que submete ao metodo_alterar.php

Lógica: Se o campo file não for alterado, não faça nada com a imagem do banco

Senão, ou seja, se ele for alterado, apague a imagem antiga e insira essa nova.

Segue abaixo os códigos:

cadastrar.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...ransitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<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_cadastro.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...ransitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<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>

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">

<html xmlns="http://www.w3.org/1999/xhtml">

<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_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 "<script>

window.location.href='gerenciar.php';

</script>";

exit;

}else{

echo mysql_error();

exit;

}

?>

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá!

Sobre isto:

Se o campo file não for alterado, não faça nada com a imagem do banco

Como já sabe fazer a verificação com sql, faça uma, busque os dados referente ao campo "imagem" e coloque num array.

Quando, a alteração for feita, apenas verifique com if/else se o texto vindo do campo "foto" é igual ao que já está no banco.Se for igual, não altera, do contrário altera.

Resultado final do 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"];

$sql = mysql_query("SELECT * FROM noticias WHERE id='$id'");
if (!$sql){
echo "Esta imagemn não existe no bd!"; //Erro de consulta
}
else{
while ($reg = mysql_fetch_array($sql)){
$img= $reg['imagem']; //Busca no banco o path

if ($img==$imagem){ //Caso não foi alterado
$query1 = mysql_query("update noticias set titulo='$titulo', resumo='$resumo', autor='$autor', data='$data', categoria='$categoria' noticia='$noticia' where id='$id'");
if (!$query1){ Echo "Erro ao alterar o resto das informações!"; }Else{Echo "Alterado!"; }
}else{ //Caso foi alterado
$query2 = mysql_query("update noticias set titulo='$titulo', resumo='$resumo', autor='$autor', data='$data', categoria='$categoria', imagem='$foto', noticia='$noticia' where id='$id'");
if (!$query2){ Echo "Erro ao as informações!"; }Else{Echo "Alterado!"; }
}}}
?>

Acho que isto poderá resolver o problema de atualizar o campo imagem tambem, mas se não resolver, tire toda a parte desde "$sql" até o último "}", e de um echo na $imagem, e verifique se o que estiver escrito no campo "Imagem", está igual ao o que vier do $_POST['imagem'];. Se estiver igual, verifique se realmente existe um campo chamado "imagem" na tabela, se stiver igual, verifique se realmente existe todos os campos que precisão ser atualizados e verifique a ortografia no código do update, tipo não veja se errou por exemplo assim:

Errado: "imgem" - Certo: "imagem".

Tem que estar igual se não da erro mesmo.

Qualquer erro ou dúvida, poste ai.

Flws!

Editado por lucke
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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...