Jump to content
AlexandreHenrique

onclick chama função PHP

Recommended Posts

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
}
?>

 

Share this post


Link to post
Share on other sites

se tá na mesma pagina deixa o action vazio e pode tirar esse target daí

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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
}
else
{
echo "errado";
}






?>

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By helkton
      galera minha duvida é a seguinte....
      faço a seguinte busca e monto um pdf pra um certificado, e neste certificado preciso coletar todas as materias referente ao curso do mesmo
      $sqlConteudoCurso = "SELECT * FROM conteudo_curso where idCursoConteudo = '$idCurso' order by idConteudo ASC; $conectaConteudoCurso = $conecta->query($sqlConteudoCurso); //conteudoCurso $pdf->SetFont('Arial', '', 11); // Tipo de fonte e tamanhos $pdf->SetTextColor(10,15,35); $pdf->SetXY(10,75); //Parte chata onde tem que ficar ajustando a posição X e Y while($resultConteudoCurso = $conectaConteudoCurso->fetch_object()){ $conteudoCurso = $resultConteudoCurso->nomeConteudo; $pdf->MultiCell(75, 5, $conteudoCurso,'0', 'L', 0);// Tamanho width e height e posição } ok esta é a consulta que realizo no banco de dados ele me retorna a materia referente ao curso certinho, digamos que o curso tenha umas 20 matérias, ele vai imprimir certinho conforme as configurações de espaçamentos...
      AGORA O B.O é seguinte quando o curso acontece de ter tipo umas umas 40 MATÉRIAS ele acaba gerando outra página de pdf
      o que eu queria era que não gerasse outra pagina e sim partisse para o lado direito, pois é um certificado
      TIPO ASSIM....
      MATERIA 1 DO CURSO 1 MATERIA 11 DO CURSO 1 MATERIA 2 DO CURSO 1 MATERIA 12 DO CURSO 1 MATERIA 3 DO CURSO 1 MATERIA 13 DO CURSO 1 MATERIA 4 DO CURSO 1 MATERIA 14 DO CURSO 1 MATERIA 5 DO CURSO 1 MATERIA 15 DO CURSO 1 MATERIA 6 DO CURSO 1 MATERIA 16 DO CURSO 1 MATERIA 7 DO CURSO 1 MATERIA 17 DO CURSO 1 MATERIA 8 DO CURSO 1 MATERIA 18 DO CURSO 1 MATERIA 9 DO CURSO 1 MATERIA 19 DO CURSO 1 MATERIA 10 DO CURSO 1 MATERIA 20 DO CURSO 1  
    • By Rebeca Julia Bronzatti
      Como salvar um formulário que possui duas tabelas, tenho uma tabela imóvel e outra arquivoimagem, gostaria de saber como salvar as duas, vi algumas coisas como dar um insert de cada vez no entanto eu não consigo recuperar a imagem, ele nem entra no if pra salvar a imagem. Se alguém puder me ajudar agradeço e muito to batendo a cabeça faz um tempo e não consigo resolver o bo.
       
      <?php include 'Conexao.php'; $nome = $_POST['nome']; $idade = $_POST['idade']; $sexo = $_POST['sexo']; $arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : ""; $sql = "INSERT INTO usuario(nome, idade, sexo) VALUES ('$nome', '$idade', '$sexo')"; $resultado = mysqli_query($cnn, $sql); if(!$sql){ echo 'não salvou'; }else{ echo 'salvou'; } if (isset($_FILES['arquivo'])) { $nome = $arquivo['name']; $tiposPermitidos = ['jpg', 'jpeg', 'png']; $quantArquivos = count($_FILES['arquivo']['name']); $contador = 0; while ($contador < $quantArquivos) { $extensao = pathinfo($_FILES['arquivo']['name'][$contador], PATHINFO_EXTENSION); $temporario = $_FILES['arquivo']['tmp_name'][$contador]; if (in_array($extensao, $tiposPermitidos)) { $tamanho = $arquivo ['size']; $novo_nome = uniqid().".$extensao" ; $diretorio = "upload/"; if(move_uploaded_file($temporario, $diretorio . $novo_nome)){ echo "Upload feito com sucesso $novo_nome<br>"; $sql_code = "INSERT INTO arquivoimagem (arquivo, data) VALUE ('$novo_nome', NOW())"; header("Location: MostraImagem.php"); if (mysqli_query($cnn, $sql_code)) { $msg = "Arquivo enviado com sucesso!"; } else { $msg = "Falha ao enviar arquivo"; } } } else { print "Tipo de arquivo não permitido"; } $contador++; } }
          
       
    • By Michael Cats
      Boa tarde,
       
      Preciso fazer um verificação, no ad criamos um grupo e somente esse grupo pode ter acesso ao conteudo.
      tenho um tela de login e depois preciso da verificação desse usuario no grupo do ad.
       
      Alguem pode me ajudar desde ja agradeço...
      Qualquer ajuda e bem vinda...
    • By violin101
      Caros amigos, saudações...
       
      Desculpa em recorrer aos amigos, com minha dúvida um pouco ingênua, se postei minha dúvida na opção errada, peço desculpas.
       
      Tenho 3(três) INPUT's que são:
      -----: quantidade
      -----: valor unitário
      -----: valor total
       
      Como faço para enquanto o INPUT do campo VALOR TOTAL for igual a 0,00 ---> o botão de GRAVAR fica desabilitado ?
       
      Tem como capturar através do JAVASCRIPT ?
       
      Grato,
       
      Cesar
       
    • By EvertonFD
      Bom dia preciso de uma ajuda tenho que fazer parecer um btn em php quando o id da url for=3
      esse é o codigo mas o btn aparece mas não encaminha o link se alguem puder me ajudar agradeço
      <?php 
       $result_colaborador = " SELECT * FROM sts_colaborador  WHERE categoria_id=$id";
              $resultado_colaborador = mysqli_query( $conn, $result_colaborador );
              $row_colaborador = mysqli_fetch_assoc( $resultado_colaborador ); 
          $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
          $link= '';        
      if ($id == 3){
          echo "<a href='colaborador?id=<?php echo $row_colaborador ['id']; ?>class='btn btn-info'>teste</a>";
      }
      ?>
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.