Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite amigos,
preciso chamar uma função PHP ao clicar em um botão tipo submit, é possível?
Tenho o seguinte código:
<form action="pagina.php" target="_blank" method="POST" >
<input type="text" name="nome" />
<input type="text" name="email" />
<input type="submit" onclick="testephp()"value="Enviar"/>
</form>
<?php
function testephp(){
comandos
}
?>Não posso tirar. Action e target são usados na aplicação.
Ao submeter o form, duas coisas devem ocorrer:
1. O envio do formulário
2. chamar essa função php (de preferencia sem refresh)
não dá desse jeito aí. o php é server side e todo executado antes da pagina ser carregada. se tem uma outra página no action ela vai ser carregada pra poder validar o form e tal. não dá pra carregar ela e continuar na mesma página. tu pode usar jquery pra fazer isso sem refresh
Apenas respondendo a pergunta, sem entrar no mérito se isso é certo ou errado. É possível fazer da seguinte forma:
<form action="pagina.php" target="_blank" method="POST" >
<input type="text" name="nome" />
<input type="text" name="email" />
<input type="submit" onclick="testephp()"value="Enviar"/>
</form>
<?php
function helloImasters()
{
return 'Hello Imasters!';
}
?>
<script type="text/javascript">
function testephp()
{
var msg = ' <?php echo helloImasters(); ?> ';
alert(msg);
}
</script>
Sera exibido um alert com **Hello Imasters!**Alexandre fiz isso à bem pouco tempo vou-te passar um exemplo, tu depois modificas para o teu código.
function envia_formulario()
{
NO CASO EU VOU USAR O GET SE QUISERES USAR O POST É SÓ ALTERAR A ESTRURA CASO NÃO CONSIGAS DIZ-ME QUE EU DOU-TE UMA AJUDA
// Criar um objeto XMLHttpRequest
if (window.XMLHttpRequest) {
// código para IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{
// código para IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// Criar a função a ser executada quando a resposta do servidor estiver pronta
xmlhttp.onreadystatechange = function()
{
// verificar se a operação de request foi completada, quer tenha tido sucesso ou não ( readyState==4 )
// e se teve sucesso ( status==200 )
if (this.readyState == 4 && this.status == 200)
{
//
// Se quisermos alterar a página corrente, com base na resposta do servidor
// (ou seja, o conteúdo gerado pelo ficheiro chamado no servidor), usamos
// código similar ao seguinte ( responseText é uma string com a resposta do servidor;
// fica com valor null se o request não teve sucesso ou se ainda não foi enviado ao servidor.
//
//NO FICHEIRO PHP ->ficheirophp ONDE TENS AS INTRUÇÕES SQL PODES FAZER UM ECHO POR EXEMPLO SE O NAO HOUVE ERROS ECHO OK
//SE HOUVE ERROS ECHO ERRADO
//DEPOIS AQUI PODES VERIFICAR ISSO
if(this.responseText.trim() == "ok")
{
alert ("Registo Bem submetido!!")
}
else
{
alert ("Ocurreu um erro por favor tente mais tarde!");
}
}
};
// Enviar o request para um ficheiro no servidor
//ficheirophp é ficheiro onde vais ter o código com as intruções sql
xmlhttp.open( "GET", "ficheirophp.php?id=" + document.getElementById("nome_cliente").value , true);
xmlhttp.send();
}
<input type="text" id="nome" name="nome" required="" />
<input type="button" value="Limpar" style="float:right"; onClick="envia_formulario()"/>
No ficheiro php metes o que tu quiseres neste caso vou fazer um insert ...
<?php
/ ligar à base de dados /
$ligacao = mysqli_connect("localhost","root","","name_bd");
mysqli_set_charset($ligacao,"utf8");
// guardamos a variavel que vem do get numa variavel temporaria $nome_user
// mysqli_real_escape_string é para proteção contra o mysql injection deves usar!
$nome_user = mysqli_real_escape_string($ligacao,$_GET["nome"]);
//instrução sql
$sql = "INSERT INTO nomes (nome)
VALUES ('".$nome_user."')";
/* executar a instrução SQL e guardar o seu
resultado em $resultado */
$resultado = mysqli_query( $ligacao, $sql );
if($resultado)echo "ok"; //registo concluido com sucesso , este echo têm de estar aqui para que depois seja mostrado um alert la na outra página com a mensagem que quiseres ele va funcionar como uma variavel... havia outra maneira porêm esta é a mais simples e eu ja tenho usado sem problemas
}echo "errado";
}
?>
se tá na mesma pagina deixa o action vazio e pode tirar esse target daí