Gleyd 0 Denunciar post Postado Junho 15, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Junho 15, 2011 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
Gleyd 0 Denunciar post Postado Junho 15, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Junho 15, 2011 Veja no detalhe idcert = '' Está vazio, não deveria ter um valor ali ? Compartilhar este post Link para o post Compartilhar em outros sites
Gleyd 0 Denunciar post Postado Junho 15, 2011 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
Gustavo Ribas Logullo 0 Denunciar post Postado Junho 16, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Junho 16, 2011 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
Back-on 14 Denunciar post Postado Junho 16, 2011 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
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Junho 16, 2011 Como o Back-on falou, este id existe na sua tabela certificados ? Compartilhar este post Link para o post Compartilhar em outros sites
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Back-on 14 Denunciar post Postado Junho 16, 2011 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
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Gustavo Ribas Logullo 0 Denunciar post Postado Junho 16, 2011 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
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Back-on 14 Denunciar post Postado Junho 16, 2011 Gustavo, más já não existia uma virgula depois do situacao! oO Problema de junta auseuaseasea Compartilhar este post Link para o post Compartilhar em outros sites
Gleyd 0 Denunciar post Postado Junho 16, 2011 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
Back-on 14 Denunciar post Postado Junho 16, 2011 Então, creio que seja o por você não ter feito a query ali no código (não fez o mysql_query). Compartilhar este post Link para o post Compartilhar em outros sites