rcdesign 1 Denunciar post Postado Janeiro 23, 2006 Depois de quase 3 horas pesquisando no forum (e na internet) sobre o assunto não consegui chegar a uma conclusão de como fazer para, no momento do preenchimento de um form, quando o usuário apertar a tecla ENTER, o formulário ser processado e efetivamente cadastrar os dados no BD. Um formulário simples em html ao se clicar o ENTER o form é enviado, mas com programação PHP e banco de dados MySQL, os dados não são enviados ao bd.. Procurei também nos foruns de Javascript mas não consegui encontrar nenhum post que definitivamente resolva a questão. Ou realmente não tem essa solução no forum ou eu procurei errado e perdi essas 3 horas de trabalho http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 23, 2006 Sempre que você clicar no ENTER ele vai direto pra onde você quer....mas cuidado para não ter mais de 1 formulário na página....é só colocar um form e o resto tudo link!!Qualquer coisa posta ai..Abraços Compartilhar este post Link para o post Compartilhar em outros sites
martinusso 0 Denunciar post Postado Janeiro 23, 2006 você terá que fazer um arquivo em php para ele incluir os dados na banco. O caminho desse arquivo você coloca no Action do form http://forum.imasters.com.br/public/style_emoticons/default/excl.gif Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 Ao pressionar ENTER o form é submetido automaticamente para o ACTION dele!Pois é Adriano, mas os dados só são cadastrados quando se clica no botão (tipo submit), quando se pressiona a tecla Enter não dá certo..Sempre que você clicar no ENTER ele vai direto pra onde você quer....mas cuidado para não ter mais de 1 formulário na página....é só colocar um form e o resto tudo link!Então Leandro.. essa é uma questão interessante pois tenho várias funções de programação dentro da página e conseqüentemente acabo tendo mais de um formulário também, no entanto, o formulário só é montado dependendo da ação anterior do usuário..Por exemplo, se clicar no menu vai abrir o formulário para criar uma assinatura (por exemplo), ao se criar a assinatura, a página recarrega com outras funções.. outro formulário..sacou?você terá que fazer um arquivo em php para ele incluir os dados na banco. O caminho desse arquivo você coloca no Action do formhehehehe.. claro martinusso.. a questão é que a programação está na mesma página do form.. ou seja ao se clicar o botão "enviar" a página recarrega, lê a programação e executa a ação (ou ações). Isso não acontece quando se aperta o Enter... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 cara tecla enter é ação keypress + evento e pra isso você vai precisar usar javascript pesquisa no forum de javascript que você acha uns exemplos Compartilhar este post Link para o post Compartilhar em outros sites
leandro07 0 Denunciar post Postado Janeiro 23, 2006 Entendi, mas se o cara tiver preenchendo o formulário o foco está nele ,entao se pressionar o enter ele vai pegar ação do form daquele formulário ...... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 é facil mas é questao de você saber mecher com javascript você pode trocar o tab por enter e fazer mais algumas funções pra concluir seu sistema Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 Entendi, mas se o cara tiver preenchendo o formulário o foco está nele ,entao se pressionar o enter ele vai pegar ação do form daquele formulário ......sim Leandro, no entanto ao se pressionar o Enter os dados não são cadastrados no BD.cara tecla enter é ação keypress + evento e pra isso você vai precisar usar javascriptpesquisa no forum de javascript que você acha uns exemplosFabyo, eu procurei no forum de javascript vide terceiro parágrafo do meu post:"Procurei também nos foruns de Javascript mas não consegui encontrar nenhum post que definitivamente resolva a questão. ..."é facil mas é questao de você saber mecher com javascript você pode trocar o tab por enter e fazer mais algumas funções pra concluir seu sistemaaí já pega um pouquinho..rs.. o que eu conheço de javascript dá apenas pro gasto, mas se tiver um código que faz o que eu quero ou que pelo menos faz alguma coisa parecida com que quero eu sempre dou um jeito. Vou mexendo até descobrir e conseguir customiza-lo.Não quero trocar função de teclas, mesmo porquê tenho forms com diversos campos e o tab é essencial. Sò quero que ao se pressionar a tecla Enter os dados sejam gravados no bd.. coisa que só acontece quando se clica no botão.. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 entao é como falei só usar javascript e coloque uma ação quando onkeypress tecla for igual a 13(enter) ele da submit e quando falei trocar tab por enter é uma coisa normal nao vai deixar de funcionar seu tab = ) só to passando a ideia pra você tentar fazer mas se você nao conseguir eu posto um exemplo, mas tenta ai pelo menos Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 Fabyo, testei várias coisas antes de abrir o post mas nada funcionou.. meu último teste foi o seguinte: <script language="javascript"><!--function handleEnter(event) {var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;if (keyCode == 13) { document.form1.submit();}return false;}--></script>e aí.. no último campo do form: <input name="assinatura" type="text" id="assinatura" size="50" onKeyPress="handleEnter(event)"> e também não funcionou.. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 muda ai no seu submit document.getElementById('form1').submit(); Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 não deu certo Fabyo, mas de qqr forma 'caiu a ficha' (as vezes demora mais cai) numa situação aqui.. o form só é processado de acordo com a ação executada pelo botão.. ou seja: <input name="criar" type="submit" id="criar" value="Criar">..........if (isset($_POST['criar'])){ $assinatura = $_POST['assinatura']; $sql = mysql_query("INSERT INTO assinaturas SET assinatura = '$assinatura'"); echo("<script> window.location = 'assinaturas.php?mostrar=1'; </script>");}............ então o código precisaria interpretar a telca Enter como se fosse o botão certo?? aí como fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 muda o $_POST coloca pra pegar um botao padrao, no caso do submit todos os campos serao enviados basta testar com qualuqer campo exemplo if(isset($_POST["botao"])) { Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 acho que não dá pra fazer assim não Fabyo..dentro da página eu tenho 3 funções de programação: Cadastrar, Editar e Apagarentão é a ação do botão de cada formulário que vai comandar a execução da programação..se for cadastro: if (isset($_POST['criar']))se for edição: if (isset($_POST['mudar']))se for deletar: if (isset($_POST['apagar']))isso está tudo numa única página, numa única programação..se eu alterar para pegar um nome padrão o sistema não vai entender qual ação é para ser efetuada.É claro que eu poderia colocar cada ação em uma página específica (cadastrar.php/editar.php/deletar.php) aí acredito que funcionaria corretamente, mas como os códigos são relativamente simples, tudo numa página só eu economizo espaço e tempo, inclusive de execução. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 23, 2006 mas você nao entendeu se você ta num formulario e clica em submit todos os campos desse formulario sera enviado mas tenho uma dica pra você eu um esquema em javascript onde você envia a ação que você quer fazer e da submit dai via php ele executa no formulario coloque um campo hidden com nome de action e nos botoes: onclick="doPost('form1', 'salvar') " onclick="doPost('form1', 'excluir') " onclick="doPost('form1', 'editar') " javascript : function doPost(formName, actionName) { var hiddenControl = document.getElementById('action'); var theForm = document.getElementById(formName); hiddenControl.value = actionName; theForm.action = 'action.php'; theForm.submit(); } exemplo: action.php <?php $funcao = $_REQUEST["action"]; if (function_exists($funcao)) { call_user_func($funcao); } function salvar() { } function excluir() { } function editar() { } ?> eu nao gosto de passar tudo pronto mas o que eu to passando pra você é tudo dicas que funcionam sem erro nenhum se você nao conseguir implementar posta ai obs: eu fiz um sistema de cadastro onde lista os usuarios, cadastra edita e exclui tudo na mesma pagina e usando ajax ficou muito bom e pratico para o usuario Compartilhar este post Link para o post Compartilhar em outros sites
rcdesign 1 Denunciar post Postado Janeiro 23, 2006 Então Fabyo, eu entendi o seu esquema - bastante interessante por sinal, apesar de não ver muita diferença entre o esse e o que eu estou usando, a não ser pelo fato de que não utilizo javascript para comandar a ação. Veja o código - se tiver tempo, é claro: <?phprequire "verifica_admin.php";?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title><?php include 'titulo.php' ?></title><link href="site.css" rel="stylesheet" type="text/css"></head><body><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" bgcolor="#FFFFFF"><? include "top.php"; ?></td> </tr> <tr> <td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="200" valign="top"><?phpinclude "menu.php";?></td> <td valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td valign="top"><h5>Assinaturas <?phpinclude "config.php";if (isset($_GET['mostrar'])){?> </h5> <form name="form1" method="post" action="assinaturas.php"> <table cellspacing="0" cellpadding="2"> <tr> <td>Criar assinatura: </td> <td><div align="right"> <input name="assinatura" type="text" id="assinatura" size="50"> </div></td> <td><input name="criar" type="submit" id="criar" value="Criar"></td> </tr> </table> <p> </p> <table border="1" cellspacing="0" cellpadding="2"> <tr> <td colspan="3"><div align="right"> <input name="apagar" type="submit" id="apagar" value="Apagar"> </div></td> </tr> <tr> <td>Assinatura</td> <td>Editar</td> <td>Apagar</td> </tr> <?php $resultado = mysql_query("SELECT * FROM assinaturas ORDER BY assinatura"); $num_linhas = mysql_num_rows($resultado); if ($num_linhas == "0") { echo ("<td>Ainda não existe nenhuma assinatura</td>"); } else { while ($linha = mysql_fetch_array($resultado)) { $id = $linha['id_ass']; $assinatura = $linha['assinatura']; echo('<tr><td>' . $assinatura . '</td>');?> <td valign="middle"><div align="center"> <a href="assinaturas.php?cod=<?= $id ?>">Editar</a></div></td> <td valign="middle"><div align="center"> <input type="checkbox" name="checkapagar[]" value="<?= $id ?>"/> </div></td> <?php } } ?> </table> </form> <?php}if (isset($_POST['criar'])){ $assinatura = $_POST['assinatura']; $sql = mysql_query("INSERT INTO assinaturas SET assinatura = '$assinatura'"); echo("<script> window.location = 'assinaturas.php?mostrar=1'; </script>");}if (isset($_GET['cod'])){ $cod = $_GET['cod']; $busca = mysql_query("SELECT * FROM assinaturas WHERE id_ass = '$cod'"); $r = mysql_fetch_array($busca);?> <form name="form2" method="post" action="assinaturas.php"> <table border="1" cellspacing="0" cellpadding="2"> <tr> <td><input name="assinatura" type="text" id="assinatura" value="<?= $r['assinatura'] ?>" size="50"></td> <td><input name="editar" type="submit" id="editar" value="Mudar"></td> </tr> </table> <input name="cod" type="hidden" id="cod" value="<?= $cod ?>"> </form> <?php}if (isset($_POST['editar'])){ $cod = $_POST['cod']; $ass = $_POST['assinatura']; $sql = mysql_query("UPDATE assinaturas SET assinatura = '$ass' WHERE id_ass = '$cod'"); echo("<script> window.location = 'assinaturas.php?mostrar=1'; </script>");}if (isset($_POST['apagar'])){ if (!empty($_POST['checkapagar'])) { $valor = $_POST['checkapagar']; $chks = array_keys($_POST['checkapagar']); for($i=0;$i<count($chks);$i++) { $id = $valor[$i]; mysql_query("DELETE FROM assinaturas WHERE id_ass = '$id'"); } echo("<script> window.location = 'assinaturas.php?mostrar=1'; </script>"); }}?> </td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td valign="top"> </td> </tr></table></body></html>Vou tentar fazer do seu jeito e depois posto o resultado.. Coloca aí o endereço dessa sua página pra gente ver .. eu nao gosto de passar tudo pronto ....entendo isso.. afinal o forum serve justamente pra gente trocar conhecimentos e aprimora-los além de se aprofundar e conhecer um pouco mais sobre nossas atividades.. Já teve oportunidade em que pedi ajuda no sentido de 'pegar um código pronto' pra determinada função ou necessidade, mas procuro, antes de recorrer ao forum, esgotar minhas possibilidades, haja visto minha ainda pouca capacidade. E são pessoas como você que nos ajudam e nos estimulam a aprender mais... você consegue nos dar no mínimo o 'caminho das pedras', sem necessariamente construir a ponte, sem ser explícito demais e/ou mal-educado (como alguns participantes infelizes que tem por aí) http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 24, 2006 entao se você nao conseguir fazer eu posto um exemplo e o que eu tentei te passar é legal porque você chama uma função do php via javascript assim fica bem pratico o uso de varios botoes num formulario ja fiz esse esquema numa loja virtual que eu montei Compartilhar este post Link para o post Compartilhar em outros sites
sadboar 0 Denunciar post Postado Janeiro 24, 2006 pq você nao faz um input hidden com um valor qq e pega ele no if ($_POST[qqcoisa])????acho q resolveria isso ai. eu pelo menos nunca tive problemas com o enter, mesmo com varios forms numa mesma pagina. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 24, 2006 mas o caso dele nao é só enter é ter varias ações diferentes num mesmo formulario e sadboar nao esqueça das aspas $_POST["qqcoisa"] sem elas ta errado Compartilhar este post Link para o post Compartilhar em outros sites