Ir para conteúdo

POWERED BY:

Arquivado

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

Gleyd

UPDATE não altera os dados

Recommended Posts

Olá pessoal sou novo em PHP e fiz um cadastro que joga os dados em uma tabela, dessa tabela consegui passar os dados para outro Form para edição, quando mando alterar não dar erro e também não altera nada no banco de dados, já quebrei a cabeça vi vários tópicos e nada.

 

OBS:action="alteracert.php?funcao=editar&idcert=<?php $idcert ?>"

Estou conseguindo passar todos os Dados pois teste com o echo na pag. que recebe os dados.

 

Desde já obrigado pela Ajuda!

 

 

if($_GET['funcao'] == "editar") { 
  $idcert = $_GET['idcert']; 
$query = mysql_query("UPDATE certificados SET nomeemp = '$nomeemp', tipo = '$tipo' ,datacompra = '$pega_datacompra', datavencimento = '$pega_datavencimento', situacao = '$situacao' WHERE idcert = '$idcert'") or die(mysql_error());
echo mysql_error();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o SQL está sendo montado como deveria.

if($_GET['funcao'] == "editar")
{ 
  $idcert = $_GET['idcert']; 

$sql = "UPDATE certificados SET nomeemp = '$nomeemp', tipo = '$tipo' ,datacompra = '$pega_datacompra', datavencimento = '$pega_datavencimento', situacao = '$situacao' WHERE idcert = '$idcert'";
echo $sql; // verifique se está como o esperado

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, Obrigado Carlos Coelho pela ajuda.

 

Fiz o procedimento e retornou o SQL

UPDATE certificados SET nomeemp = 'JAILSON ALVES', tipo = 'A3 NF-e' ,datacompra = '2011-01-01', datavencimento = '2013-01-01', situacao = 'Expirado' WHERE idcert = ''Certificado Atualizado com Sucesso!

 

Tudo correto nos valores menos na Variavél $idcert. :(

O que posso fazer para solucionar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja no detalhe

idcert = ''

 

Está vazio, não deveria ter um valor ali ?

 

Não sei por que não estou recebendo o valor $idcert se estou usando o seguinte codigo na pagina anterior.

action="alteracert.php?funcao=editar&idcert=<?php $idcert ?>"

 

Veja no detalhe

idcert = ''

 

Está vazio, não deveria ter um valor ali ?

 

Não sei por que não estou recebendo o valor $idcert se estou usando o seguinte codigo na pagina anterior.

action="alteracert.php?funcao=editar&idcert=<?php $idcert ?>"

 

Coloquei para a variavel $idcert ir em um campo texto e estou passando via posta porém ainda não altera os dados no BD.

 

Mais alguma Dica?

 

UPDATE certificados SET nomeemp = 'JAILSON ALVES', tipo = 'A1 NF-e' ,datacompra = '2011-01-01', datavencimento = '2012-01-01', situacao = 'Ativo' WHERE idcert = '10'

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que a tua sql está retornando agora? Lá na url já tentou fazer isto:

 

action="alteracert.php?funcao=editar&idcert=<?php echo $idcert; ?>" 

 

Espero ter ajudado.

 

Gustavo - Desenvolvedor Web

 

Olá Gustavo, obrigado pela ajuda, Troquei o codigo:

action="alteracert.php?funcao=editar&idcert=<?php $idcert ?>"

 

Pelo que você postou mas mesmo assim não funcionou.

 

action="alteracert.php?funcao=editar&idcert=<?php echo $idcert; ?>" 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu sql está mostrando isso e aparentimente está tudo Ok, existe algo mais que posso fazer?

 

UPDATE `certificados` SET `nomeemp` = 'JAILSON ALVES', `tipo` = 'A1', `datacompra` = '2011-01-01', `datavencimento` = '2012-01-01' `situacao` = 'Ativo', WHERE `certificados``idcert` = '10'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu SQL tem erros. Ele deveria ficar assim

 

UPDATE `certificados` SET `nomeemp` = 'JAILSON ALVES', `tipo` = 'A1', `datacompra` = '2011-01-01', `datavencimento` = '2012-01-01', `situacao` = 'Ativo' WHERE `idcert` = 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já percebeu que o ID que você está instânciando não aparece na URL? O certo seria você dar um echo lá só que instaciar o PHP fora da aspas:

 

action="alteracert.php?funcao=editar&idcert=<?php echo $idcert ?>"

 

Outra ainda, você tem certeza que o ID que está instanciado no $idcert existe no banco de dados?

 

PS: Existe o $idcert na página anterior?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu SQL tem erros. Ele deveria ficar assim

 

UPDATE `certificados` SET `nomeemp` = 'JAILSON ALVES', `tipo` = 'A1', `datacompra` = '2011-01-01', `datavencimento` = '2012-01-01', `situacao` = 'Ativo' WHERE `idcert` = 10

 

Olá Carlos,

Fiz as correções mas percebi que no seu WHERE idcert = 10

O número do id fica sem aspas e já no meu aparece WHERE idcert = '10'

 

if($_GET['funcao'] == "editar")
{ 
  $idcert = $_POST['idcert']; 

     $sql = "UPDATE `certificados` SET 
                       `nomeemp` = '{$_POST['nomeemp']}', 
                       `tipo` = '{$_POST['tipo']}',
                       `datacompra` = '$pega_datacompra', 
                       `datavencimento` = '$pega_datavencimento',
					`situacao` = '{$_POST['situacao']}',  
                       WHERE `idcert` = '$idcert'";

 

Tirei as aspas do $idcert do código acima e meu sql ficou igual o seu postado mas mas não altera.

Mesmo todos os valores for Recebido normalmente como dar pra ver no SQL, algo errado na página anterior que manda os dados pode influenciar na gravação no Banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Back-on falou, este id existe na sua tabela certificados ?

 

Sim existe e os dados que vai para esse formulário de edição vem do banco de dados da tabela certificados.

 

editacert.php

<form id="cadcert" name="editar" method="post" action="alteracert.php?funcao=editar&idcert=<?php echo $idcert; ?>" class="texto2">
 <div id="input"><table width="566" height="134">
   <tr>
     <td width="222">Nome da Empresa:</td>
     <td width="332"><label for="nomemp"></label><input name="idcert" type="text" id="idcert" value="<?php echo $idcert ?>" />
     <input type="text" size="50px" name="nomeemp" id="nomeemp" value="<?php echo $pega_nomeemp ?>" /></td>
   </tr>
   <tr>
     <td>Tipo de Certificado:</td>
     <td><label for="tipo"></label>
     <select name="tipo" id="tipo" />
     <option value="<?php echo $pega_tipo ?>"><?php echo $pega_tipo ?></option>
       <option value="A1 NF-e">NF-e A1</option>
     <option value="A3 NF-e">NF-e A3</option>
     <option value="A3 e-CPF">e-CPF A3</option>
     <option value="A1 e-CNPJ">e-CNPJ A1</option>
     <option value="A3 e-CNPJ">e-CNPJ A3</option>
       </select></td>
   </tr>
     <tr>
     <td>Data Compra:</td>
     <td><label for="datacompra"></label>
     <input type="text" size="15px" name="datacompra" id="datacompra" maxlength="10"  value="<?php echo $pega_datacompra ?>"OnKeyPress="formatar(this, '##/##/####')" onBlur="return doDateVenc(this.id,this.value, 4);">
</td>
   </tr>
   <tr>
     <td>Data Vencimento:</td>
     <td><label for="datavencimento"></label>
   <input type="text" size="15px"  name="datavencimento" id="datavencimento" maxlength="10" value="<?php echo $pega_datavencimento ?>" OnKeyPress="formatar(this, '##/##/####')" onBlur="return doDateVenc(this.id,this.value, 4);"></td>
   </tr>
   <tr>
     <td>Situação</td>
     <td><label for="situacao"></label>
     <select name="situacao" id="situacao" />
<option value="<?php echo $pega_situacao ?>"><?php echo $pega_situacao ?></option><option value="Ativo">Ativo</option>
     <option value="Expirado">Expirado</option>
     <option value="Falta 1 Mes">Falta 1 Mes</option>
     <option value="Renvando">Renovando</option>
  </select></td>
   </tr>
   <tr>
     <td> </td>
     <td><input type="submit" name="button" id="button" value="Alterar" /></td>
   </tr>
 </table>
  </div>
 </form>

 

alteracert.php Que recebe os dados da edição e gravar no banco:

<?php 
include "conexao/connDB.php";
$idcert = $_POST['idcert'];
$nomeemp = $_POST['nomeemp'];
$tipo = $_POST['tipo'];

//########### Converte data para YYYY-MM-DD ######################
$pega_datacompra= $_POST['datacompra'];
$d=explode("/",$pega_datacompra);
$pega_datacompra=$d[2]."-".$d[1]."-".$d[0];

$pega_datavencimento= $_POST['datavencimento'];
$d=explode("/",$pega_datavencimento);
$pega_datavencimento=$d[2]."-".$d[1]."-".$d[0];

$situacao = $_POST['situacao'];

if($_GET['funcao'] == "editar")
{ 
  $idcert = $_POST['idcert']; 

  $sql = "UPDATE certificados SET nomeemp = '$nomeemp', tipo = '$tipo' ,datacompra = '$pega_datacompra', datavencimento = '$pega_datavencimento', situacao = '$situacao' WHERE idcert = '$idcert'";

echo $sql; // verifique se está como o esperado


//header('Location:relacao_certificados.php');
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concerteza não vai achar o ID mesmo. Só uma pergunta, nesse ultimo script aí, tu não fez a query, será que essa é a falha? O.O'

 

PS: Você não precisa instanciar 2 vezes a mesma variável, no caso, o $_POST['idcert'] está.

 

E se não for isso, tente deixar a sua query desse jeito:

 $sql = "UPDATE certificados SET nomeemp = '$nomeemp', tipo = '$tipo', datacompra = '$pega_datacompra', datavencimento = '$pega_datavencimento', situacao = '$situacao' WHERE idcert = '$idcert'";

 

EDITANDO

-------------------------------->

 

Depois de analisar profundamente seu código, achei o erro, você não instanciou nada no $idcert na página editacert.php. Pense comigo, da onde você está tirando o $idcert no editacert.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concerteza não vai achar o ID mesmo. Só uma pergunta, nesse ultimo script aí, tu não fez a query, será que essa é a falha? O.O'

 

PS: Você não precisa instanciar 2 vezes a mesma variável, no caso, o $_POST['idcert'] está.

 

E se não for isso, tente deixar a sua query desse jeito:

 $sql = "UPDATE certificados SET nomeemp = '$nomeemp', tipo = '$tipo', datacompra = '$pega_datacompra', datavencimento = '$pega_datavencimento', situacao = '$situacao' WHERE idcert = '$idcert'";

 

EDITANDO

-------------------------------->

 

Depois de analisar profundamente seu código, achei o erro, você não instanciou nada no $idcert na página editacert.php. Pense comigo, da onde você está tirando o $idcert no editacert.php?

 

obrigado por estarem me ajudando, Back-on eu pensei que o idcert sendo passado pelo via POST pelo input text funcionava normalmente, é que sou novo em php, e como resolvo, faço essa "instância"? Se poder me explicar agradeço muito!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, para tirar essa dúvida faz o seguinte:

 

$sql = "UPDATE `certificados` SET `nomeemp` = '{$_POST['nomeemp']}', `tipo` = '{$_POST['tipo']}', `datacompra` = '$pega_datacompra', `datavencimento` = '$pega_datavencimento', `situacao` = '{$_POST['situacao']}' WHERE `idcert` = '$idcert'";
$query = mysql_query($sql) or die(mysql_error());

 

Detalhe importante: posta o erro que for mostrado e também eu acabei de tirar uma vírgula depois de $_POST['situacao']. Ali não existe vírgula, pois é o último comando antes de um WHERE.

 

Gustavo - Desenvolvedor Web

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, para tirar essa dúvida faz o seguinte:

 

$sql = "UPDATE `certificados` SET `nomeemp` = '{$_POST['nomeemp']}', `tipo` = '{$_POST['tipo']}', `datacompra` = '$pega_datacompra', `datavencimento` = '$pega_datavencimento', `situacao` = '{$_POST['situacao']}' WHERE `idcert` = '$idcert'";
$query = mysql_query($sql) or die(mysql_error());

 

Detalhe importante: posta o erro que for mostrado e também eu acabei de tirar uma vírgula depois de $_POST['situacao']. Ali não existe vírgula, pois é o último comando antes de um WHERE.

 

Gustavo - Desenvolvedor Web

 

Mermão,[RESOLVIDO!] Funcionou bacana, Gostaria de saber o que causou isso?

Muito obrigado todos vocês!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gustavo, más já não existia uma virgula depois do situacao! oO

 

Verdade, não tinha mais a virgula, não foi isso que fez funcionar não:

$query = mysql_query($sql) or die(mysql_error());

Ou essa linha so serve para mostrar erro caso ocorra?

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.