Ade5 0 Denunciar post Postado Janeiro 4, 2011 Bom dia! É o seguinte, estou passando dados com AJAX para o PHP salvar no bd PostgreSQL só q dá os seguintes erros: Notice: Undefined index: km_inicial in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\system\princ\proc\trans.php on line 31 Warning: pg_query() [function.pg-query]: Query failed: ERRO: sintaxe de entrada inv�da para tipo numeric: "" in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\system\princ\proc\trans.php on line 36 Posso estar enganado mas suspeito q seja por causa do tipo de dados que está sendo enviado pelo AJAX, se for este o problema do erro, gostaria de saber como posso passar os dados recebidos pelo PHP para numerico ou inteiro para depois envia-los para o bd. Desde já agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 4, 2011 O primeiro problema diz que não existe o índice km_inicial que você está tentando acessar no arquivo C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\system\princ\proc\trans.php na linha 31. Poste o código deste arquivo, identificando qual é a linha 31. O segundo erro parece ser resultado do primeiro. Então, vamos resolver o primeiro erro e ver o que acontece. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Janeiro 4, 2011 o que tem na linha 31 ? Compartilhar este post Link para o post Compartilhar em outros sites
Ade5 0 Denunciar post Postado Janeiro 4, 2011 segue o cod: if (isset($_POST['inserir_viagem_percurso'])){ $codigo_estrada_tipo = $_POST['codigo_estrada_tipo']; $km_inicial = $_POST['km_inicial']; [b] //linha 31[/b][u][/u] $km_final = $_POST['km_final']; $valor_km_atual = $_POST['valor_km_atual']; $insere_viagempercurso = pg_query($conexao,"INSERT INTO viagem_percurso(codigo_viagem, codigo_estrada_tipo, km_inicial, km_final, valor_km_atual) VALUES ('{$_SESSION['viagem']}','$codigo_estrada_tipo','$km_inicial', '$km_final','$valor_km_atual')"); if($insere_viagempercurso){ $_SESSION['viagem_percurso'] = 1; echo"Kilometragem Salva!!!<br>Prenncha os outros campos!"; }else{ echo"Não foi possivel Salvar!"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 4, 2011 Faça o seguinte teste: if (isset($_POST['inserir_viagem_percurso'])){ echo 'Valores de POST <pre>'; print_r($_POST); exit; $codigo_estrada_tipo = $_POST['codigo_estrada_tipo']; $km_inicial = $_POST['km_inicial']; $km_final = $_POST['km_final']; $valor_km_atual = $_POST['valor_km_atual']; $insere_viagempercurso = pg_query($conexao,"INSERT INTO viagem_percurso(codigo_viagem, codigo_estrada_tipo, km_inicial, km_final, valor_km_atual) VALUES ('{$_SESSION['viagem']}','$codigo_estrada_tipo','$km_inicial', '$km_final','$valor_km_atual')"); if($insere_viagempercurso){ $_SESSION['viagem_percurso'] = 1; echo"Kilometragem Salva!!!<br>Prenncha os outros campos!"; }else{ echo"Não foi possivel Salvar!"; } } Execute o código e veja o que aparece. Provavelmente $_POST['km_inicial'] não vai existir, ou seja, deve estar com o nome do índice errado. Caso continue sem entender o problema, poste a saída gerada por este código. Carlos Eduardo Carl Compartilhar este post Link para o post Compartilhar em outros sites
Giovani Velasques 1 Denunciar post Postado Janeiro 5, 2011 Bom dia. Cara retorna normal os valores... Array ( [inserir_viagem_percurso] => inserir_viagem_percurso [km_inicail] => 111111 [km_final] => 222222 [codigo_estrada_tipo] => 6 [valor_km_atual] => 1.50 ) E ainda segue as mensagens de erro. Notice: Undefined index: km_inicial in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem1\principal\processo\transacao.php on line 31 Warning: pg_query() [function.pg-query]: Query failed: ERRO: sintaxe de entrada inv�da para tipo numeric: "" in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem1\principal\processo\transacao.php on line 35 O que pode ser isso??? Para melhor entendimento irei passar todo código PHP que é executado... include('../inc/conexao.php'); pg_query($conexao,"BEGIN"); if (isset($_POST['inserir_viagem'])){ $codigo_tecnico = $_SESSION['codigo_tecnico']; $codigo_veiculo = $_POST['codigo_veiculo']; $data_saida = $_POST['data_saida']; $data_chegada = $_POST['data_chegada']; $hora_saida = $_POST['hora_saida']; $hora_chegada = $_POST['hora_chegada']; $insere_viagem = pg_query($conexao,"INSERT INTO viagem(codigo_tecnico, codigo_veiculo, data_saida, data_chegada, hora_saida, hora_chegada)VALUES ('$codigo_tecnico','$codigo_veiculo', '$data_saida', '$data_chegada', '$hora_saida', '$hora_chegada')"); if($insere_viagem){ $select_viagem = pg_query($conexao,"SELECT CURRVAL('viagem_codigo_viagem_seq') as ultimo_codigo"); echo"Viagem Salva!!!<br>Prenncha os outros campos!<br/>"; $codigo_viagem = pg_fetch_array($select_viagem); $_SESSION['viagem'] = $codigo_viagem['ultimo_codigo']; }else{ echo"Não foi possivel Salvar!"; } } if (isset($_POST['inserir_viagem_percurso'])){ $codigo_estrada_tipo = $_POST['codigo_estrada_tipo']; $km_inicial = $_POST['km_inicial']; $km_final = $_POST['km_final']; $valor_km_atual = $_POST['valor_km_atual']; $insere_viagem_percurso = pg_query($conexao,"INSERT INTO viagem_percurso(codigo_viagem, codigo_estrada_tipo, km_inicial, km_final, valor_km_atual) VALUES ('{$_SESSION['viagem']}','$codigo_estrada_tipo','$km_inicial', '$km_final','$valor_km_atual')"); if($insere_viagem_percurso){ $_SESSION['viagem_percurso'] = 1; echo"Kilometragem Salva!!!<br>Preenncha os outros campos!"; }else{ echo"Não foi possivel Salvar!"; } } if (isset($_POST['inserir_sub_viagem'])){ $dt_chegada_prod = $_POST['dt_chegada_prod']; $produtor = $_POST['produtor']; $propriedade = $_POST['propriedade']; $servico = $_POST['servico']; $hr_chegada_prod = $_POST['hr_chegada_prod']; $hr_saida_prod = $_POST['hr_saida_prod']; $observacao = $_POST['observacao']; $insere_sub_viagem = pg_query($conexao,"INSERT INTO sub_viagem(codigo_viagem, data,codigo_produtor, codigo_propriedade, codigo_servico, hora_entrada, hora_saida, observacao) VALUES ('{$_SESSION['viagem']}', '$dt_chegada_prod', '$produtor', '$propriedade','$servico', '$hr_chegada_prod', '$hr_saida_prod', '$observacao')"); if($insere_sub_viagem){ $_SESSION['sub_viagem'] = 1; echo"Sub-viagem Salva!"; } else{ echo"Não foi possivel Salvar!"; } } if(isset($_POST['salvar'])){ if(isset($_SESSION["viagem"]) && ($_SESSION["viagem_percurso"]) && ($_SESSION["sub_viagem"])){ pg_query($conexao,"COMMIT"); unset($_SESSION["viagem"]); unset($_SESSION["viagem_percurso"]); unset($_SESSION["sub_viagem"]); echo"Kilometragem Cadastrada"; }else{ pg_query($conexao,"ROLLBACK"); unset($_SESSION["viagem"]); unset($_SESSION["viagem_percurso"]); unset($_SESSION["sub_viagem"]); echo"Kilometragem nao foi salva!!!"; } } Não sei mais o que fazer espero que me deem esta força!!! Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 5, 2011 Então, vamos analisar com cuidado e atenção: // retorno do print_r [km_inicail] => 111111 // código que você usa $km_inicial = $_POST['km_inicial']; Percebe a diferença? No seu formulário está inicAIl. Você está recuperando inicIAl. No formulário o nome do campo está incorreto. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Giovani Velasques 1 Denunciar post Postado Janeiro 5, 2011 Bah cara sem palavras pela a tua ajuda... Pior que estava incorreto no formulário mesmo, é que estou encaminhando via ajax. Mas agora se não for muito abuso, você pode analizar o código inteiro que le mandei acima, e ver o pq esta me retornando este erro, ele já estava me retornando antes, mas primeiro os bois e depois a carroça. Resolvemos o primeiro agora vem este, eu consigo gravar a viagem no BEGIN, mas as tabelas que dependem desta tabela viagem não estão salvando. Então resumindo esta me dando os seguintes erros, que na verdade são do mesmo tipo, só que de tabelas diferentes: TABELA VIAGEM_PERCURSO Warning: pg_query() [function.pg-query]: Query failed: ERRO: inser� ou atualiza� em tabela "viagem_percurso" viola restri� de chave estrangeira "viagem_percurso_fk" DETAIL: Chave (codigo_viagem)=(199) n�est�resente na tabela "viagem". in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem1\principal\processo\transacao.php on line 36 N�foi possivel Salvar! TABELA SUBVIAGEM Warning: pg_query() [function.pg-query]: Query failed: ERRO: inser� ou atualiza� em tabela "sub_viagem" viola restri� de chave estrangeira "sub_viagem_fkviagem" DETAIL: Chave (codigo_viagem)=(199) n�est�resente na tabela "viagem". in C:\Arquivos de programas\PostgreSQL\EnterpriseDB-ApachePhp\apache\www\kmsystem1\principal\processo\transacao.php on line 57 N�foi possivel Salvar! Então como disse acima, eu já salvei a viagem, isto dentro do BEGIN , então por consequencia já foi gerado o codigo_viagem, era pra ele estar presente na tabela viagem, mas este erro diz q não esta. O que pode ser??? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 5, 2011 Antes de executar o insert que dá problema, imprima ele na tela, para ver o que está sendo enviado para o banco. Veja se está pegando as variáveis corretamente. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Giovani Velasques 1 Denunciar post Postado Janeiro 5, 2011 Retorno normal os valores, isto na tabela viagem_percurso Array ( [inserir_viagem_percurso] => inserir_viagem_percurso [km_inicial] => 111111 [km_final] => 222222 [codigo_estrada_tipo] => 6 [valor_km_atual] => 1.50 ) Será q pelo fato do Begin e Commit? Pois é gerado temporario enquanto não dá commit, e quando ele vai consulta o codigo no banco ele não vai estar mesmo... O que será q posso fazer??? Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 5, 2011 Não sei se é por causa do Commit, mas o que eu disse para você fazer é assim: $sql = "INSERT INTO viagem(codigo_tecnico, codigo_veiculo, data_saida, data_chegada, hora_saida, hora_chegada) VALUES ('$codigo_tecnico','$codigo_veiculo', '$data_saida', '$data_chegada', '$hora_saida', '$hora_chegada')"; echo 'A query de INSERT é - ',$sql; $insere_viagem = pg_query($conexao,$sql); Veja se a query está correta neste caso, ou no caso da query que estiver disparando o erro. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Giovani Velasques 1 Denunciar post Postado Janeiro 5, 2011 Isto foi o que me retorno da query: INSERT INTO viagem(codigo_tecnico, codigo_veiculo, data_saida, data_chegada, hora_saida, hora_chegada)VALUES ('35','19', '05/01/2011', '05/01/2011', '11:11', '22:22'); E o codigo_viagem foi: $select_viagem = pg_query($conexao,"SELECT CURRVAL('viagem_codigo_viagem_seq') as ultimo_codigo"); echo"Viagem Salva!!!<br>Preenncha os outros campos!<br/>"; $codigo_viagem = pg_fetch_array($select_viagem); $_SESSION['viagem'] = $codigo_viagem['ultimo_codigo']; echo $_SESSION['viagem']; Retorno = 211 Esta tudo retornando certo, já tinha feito estes testes... Só não consigo entender o motivo daquele erro. Este esta sendo um grande desafio mesmo!!! Espero q possa me dar uma força. Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 5, 2011 Então deve ser algum problema com o COMITT mesmo, mas não sei como resolver. Vi outra coisa no código (não tem relação com o problema, mas...): INSERT INTO viagem(codigo_tecnico, codigo_veiculo, data_saida, data_chegada, hora_saida, hora_chegada)VALUES ('35','19', '05/01/2011', '05/01/2011', '11:11', '22:22'); 35 e 19 (codigo_tecnico e codigo_veiculo) são inteiros. Se os campo estiverem definidos como INT (como deve ser), não devem ser colocado entre aspas, pois isto é um erro. As datas também não devem ser gravadas no banco assim. Devem ser gravadas em formato de data (http://www.postgresql.org/docs/8.1/interactive/datatype-datetime.html) e não como strings como você faz ali. Acho que é isto. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Giovani Velasques 1 Denunciar post Postado Janeiro 5, 2011 Bah velho valeu pela dica ae... Foi muito util tua força!!! Tudo de bueno pra ti. Agora alguem pode me ajudar nessa coisa brava q estou passando um bom trabalho... Espero que alguem possa me dar uma força. Compartilhar este post Link para o post Compartilhar em outros sites