Jump to content
Vinny

Ajuda pra atualizar registro no banco

Recommended Posts

Vinny

Estou com problema em atualizar um registro no banco de dados, segue o code:

if ($_POST['atualizar']) {
$nome		= $_POST['nome'];
$fone		= $_POST['fone'];
$cidade		= $_POST['cidade'];
$link		= $_POST['link'];
$pega_imagem	= $_POST['pega_imagem'];
$id			= $_POST['id'];

if ((!$nome) || (!$fone) || (!$cidade) || (!$link)){

echo "<strong style='color: #BC2A4D;'>Por favor, preencha os campos obrigatório.</strong> <br /> <br />";

} else {


// verifica se foi enviado um arquivo
if(isset($_FILES['foto']['name']))
{
$arquivo_tmp = $_FILES['foto']['tmp_name'];
$foto = $_FILES['foto']['name'];
// Pega a extensao
$extensao = strrchr($foto, '.');
// Converte a extensao para mimusculo
$extensao = strtolower($extensao);

// Somente imagens, .jpg;.jpeg;.gif;.png
// Aqui eu enfilero as extesões permitidas e separo por ';'
// Isso server apenas para eu poder pesquisar dentro desta String
if(@strstr('.jpg;.jpeg;.gif;.png', $extensao))
{
// Cria um nome único para esta imagem
// Evita que duplique as imagens no servidor.
$imagem = md5(microtime()) . $extensao;
// Concatena a pasta com o nome
$destino = './images/modelos/' . $imagem;

// tenta mover o arquivo para o destino
if( @move_uploaded_file( $arquivo_tmp, $destino ))
{
echo "";
}
else
echo "<strong style='color: #BC2A4D;'>Erro ao salvar a foto. Aparentemente você não tem permissão de escrita.</strong><br />";
} else
echo "Você poderá enviar apenas arquivos \"*.jpg;*.jpeg;*.gif;*.png\"<br />";

		$sql_UPDATE = "UPDATE `modelos` SET `nome` = '".$nome."', `fone` = '".$fone."', `cidade` = '".$cidade."', `link` = '".$link."', `foto` = '".$imagem."' WHERE (`modelo_id` = ".$id.")";

		$query = mysql_query($sql_UPDATE, $conn) or die(mysql_error());

			if ($sql_UPDATE) {
				echo "<strong style='color: #BC2A4D;'>O seu anúncio foi atualizado com sucesso.</strong>";
				header("refresh:3;url=modelos.php" );
			} else {
				echo 'Não foi possível atualizar os dados, tente novamente.';
			}

}
else
{


		$sql_UPDATE = "UPDATE `modelos` SET `nome` = '".$nome."', `fone` = '".$fone."', `cidade` = '".$cidade."', `link` = '".$link."' WHERE (`modelo_id` = ".$id.")";

		$query = mysql_query($sql_UPDATE, $conn) or die(mysql_error());

			if ($sql_UPDATE) {
				echo "<strong style='color: #BC2A4D;'>O seu anúncio foi atualizado com sucesso.</strong>";
				header("refresh:3;url=modelos.php" );
			} else {
				echo 'Não foi possível atualizar os dados, tente novamente.';
			}
}

}
}

Este code é o mesmo usado para adicionar registros, eu só modifiquei para que faça o UPDATE neste form.

Vamos ao problema, quando eu atualizo todos os campos, incluindo a foto, tudo funciona normal. Mas quando eu não atualizo a foto, somente os campos de texto, a foto é apagada do registro. Notem que no else onde atualiza quando não tem foto, não tem a coluna foto. E mesmo que eu coloque a coluna usando a imagem atual no $page_imagem, dá o mesmo problema. Alguma ajuda?

Edited by yoda

Share this post


Link to post
Share on other sites
bioshock

Assim de gás, não estás a fechar correctamente as condições.

if(...){
 if(...){
   }else{
 (...)
 }
}else{
  (...)
}

Edited by bioshock
  • Vote 1

Share this post


Link to post
Share on other sites
Vinny

bio, apesar disso, o codigo funciona bem, se não estou enganado há apenas uma condição sem o {, que é o segundo else, porém ao adicionar o { o codigo não funciona.

Só lembrando que está tudo funcionando muito, somente a questão de não atualizar a imagem que se apaga do registro.

Share this post


Link to post
Share on other sites
NunoDinis

Código tão confuso e mal identado, assim torna-se ainda mais complicado.

Tens a certeza que não te está a entrar sempre no primeiro update, que tem o campo foto?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
bioshock

Aquilo que ele tem está mal. Eu estou a tentar com que ele se mexa. Um dos problemas passa pelas condições, que estão mal efectuadas.

  • Vote 1

Share this post


Link to post
Share on other sites
yoda

O @bioshock tem razão, indenta esse código de forma a que possa ser legível e verás logo onde falha. Exemplo de indentação :

if ( $x > 1 ) // condição apresentada de forma legível
{ // aspas abertas na linha consequente à instrução if
 $a = $b + $c; // tabulação superior à anterior instrução
} // fecho de instrução sempre em linha indepentente
else
{
 $a = 1;
}

Edited by yoda

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.