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
      ola galera, dúvida besta, mais ja estou quebrando a cabeça,
      seguinte estou preso  num select <option> vindo do banco de dados
      fiz alguns com o if(){}
      mais é pra saber tipoImovel - interesseImovel ou finalidadeImovel
      esses ai são poucos, ficou dboas fazer um if(){} pra cada. Agora pensa comigo...
      Tenho uma TABELA clientes, guardo as informações dos clientes
      Tenho outra tabela imoveis, com os dados do imóvel e tbm com o cliente que cadastrou o imovel,
      na pagina pra editar-imovel.php, monto o <option> pra consultar na tabela clientes todos os clientes cadastrados, como deixo "selected" no nome do cliente que cadastrou o imóvel??
    • By eduardaarosaa
      Ola!! Estou tentando fazer o upload de múltiplos arquivos usando o laravel. Mas  estou tendo o seguinte erro ao tentar cadastrar: 
      "Call to undefined method Symfony\Component\HttpFoundation\FileBag::extension()"  
      Meu controller:
        public function cadastro_info(Request $request)
          {
              $dataForm = $request->except('_token');
              $nameFile = null;
              $loop = count($request->files);
              for ($i=0; $i< $loop; $i++) {
             
                  $name = uniqid(date('HisYmd'));
                  $extension = $request->files->extension();
                  $nameFile = "{$name}.{$extension}";

                  $upload = $request->files->storeAs('upload', $nameFile);
                }
                  if (!$upload)
                      return redirect()
                          ->back()
                          ->with('error', 'Falha ao fazer upload')
                          ->withInput();
              }
      Minha rota:
       Route::post('/cadastro_empresa', 'Site\SiteController@cadastro_info')->name('cadastro_info');
       
      O que estou carregando no controller:
      use Illuminate\Http\Request;
      use DB;
      use App\Http\Controllers\Controller;
      use App\Models\Site\cadastro;
       
      Gerei o link para o storage já 
       
      Alguém sabe dizer o motivo do erro?
       
      Obrigada!!!
       
       
    • By stefany nogueira
      Não estou esta trazendo a tabela e aparece o seguinte erro:

              
      ( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\busca\index.php on line 20
      Call Stack
      #TimeMemoryFunctionLocation
      10.0009402840{main}(  )...\index.php:0
      20.0032418656mysqli_fetch_assoc
      (  )...\index.php:20
                    
       
       
      <?php
          include "conexao.php"
      ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml1" lang="pt-br" xml:lang="pt-br">
          <head>
              <meta charset="utf-8">
              <title> Busca </title>
          </head>
          <body>
          <form action="results" method="post">
          <select name = convênios>
              <option>Selecione o convênio</option>
              <?php
                  $convenios = "SELECT * FROM convênios";
                  $qrconvenio = mysqli_query($conexao, $convenios);
                  while ($row_convenios = mysqli_fetch_assoc($qrconvenio)) ?>
                      <option value="<?php echo($row_convenios ['id_convenios'])?>"><?php echo($row_convenios ['convenio']) ?></option>
              ?>            
          </select>
      </body>
    • By violin101
      Caros amigos, saudações...
       
      Peço desculpa se estou postando minha dúvida na opção errada.
       
      Estou com um problema que não consigo entender, antes de usar o Codeigniter, tenho um Sistema em PHP onde conseguia visualizar todos os arquivos .PDF que fosse gravado no Mysql, conforme código fonte abaixo:
      <?php //Conexão com o Banco de Dados include"../Connections/config.php"; //Variáveis Passada por Método POST $idDoclieGet = isset($_GET['idDoclie']) ? $_GET['idDoclie'] : false; $idDoclie = isset($_POST['idDoclie']) ? $_POST['idDoclie'] : $idDoclieGet; //Executa a busca no Mysql $sql_pegaDocto = "SELECT * FROM docCliente WHERE idDoclie = :idDoclie"; try{ $query_pegaDoctos = $conecta->prepare($sql_pegaDocto); $query_pegaDoctos->bindValue(':idDoclie',$idDoclie,PDO::PARAM_STR); $query_pegaDoctos->execute(); $res_queryPegaDocto = $query_pegaDoctos->fetchAll(PDO::FETCH_ASSOC); }catch(PDOexcetpion $error_clientes){ echo 'Erro ao seleciona os clientes!'; } foreach($res_queryPegaDocto as $resDocto){ $idDoclie = $resDocto['idDoclie']; $nomeDoclie = $resDocto['nomeDoclie']; $pastaDoclie = $resDocto['pastaDoclie']; $validaDoclie = $resDocto['validaDoclie']; //Visualizar documento na tela header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="'.$pastaDoclie.'"'); header('Content-Transfer-Encoding; binary'); header('Accept-Ranges; bytes'); readfile('admin-cliente/docClie/'.$resDocto['pastaDoclie']); } ?>  
      Infelizmente no Codeigniter não consigo adaptar esse código acima para poder visualizar os arquivos .PDF.
       
      Alguns dos amigos, teria algum exemplo em Codeiginter para que possa entender como visualizar os arquivos ?
       
      Grato,
       
      Cesar
       
    • By gabrielslessa
      Olá amigos, sou novato no PDO e estou quebrando cabeça para fazer uma consulta e somar os valores da coluna da tabela de itens com um parametro predefinido ('id' e 'pedido_min') onde id é o id do produto e pedido_min está no bd mysql como (ENUM) Y ou N, onde Y quer dizer que esse produto não entra na soma do pedido minimo da compra e N entra na soma do pedido minimo. Estou fazendo isso para que produtos como exemplo de cigarros não entrem na conta do pedido minimo. 
       
      Tenho um FOREACH que lista os produtos que estao na SESSION php, dentro ou fora desse FOREACH eu preciso somar os produtos que possuem o parametro Y na coluna 'pedido_min' do bd, para diminuir da soma total  do carrinho de compras e checar se o cliente atingiu o valor minimo de compra (15,00), caso tenha atingido o valor minimo entao libera o botao para fechar o pedido.
       
      meu código está abaixo:
       
      <div class="card-body"> <?php //buscando no bd o valor do pedido minimo $config = app('db')->select("SELECT as_configura.* FROM as_configura"); $config = $config[0]; //montando cart dos produtos sa session $cart_box = '<ul class="cart-products-loaded">'; $total = 0; $total_acresc = 0; foreach ($_SESSION["products"] as $product) : $product_name = $product["product_name"]; $product_price = $product["product_price"]; $product_acresc = $product["product_acresc"]; $id = $product["id"]; $product_qty = $product["product_qty"]; //somando o subtotal de cada item do carrinho $subtotal = ($product_price * $product_qty); //total de todos o s itens $total = ($total + $subtotal); // checa se tem itens que nao entram na soma do pedido minimo $result = app('db')->select("SELECT as_produtos.preco FROM as_produtos WHERE id = $id AND as_produtos.pedido_min = 'Y'"); //soma o valor total dos itens que nao entram na soma do pedido minimo $total_cigarro = app('db')->query("SELECT SUM(preco) AS total FROM as_produtos WHERE pedido_min = 'Y' AND id = $id ")->fetchColumn(); $checaCigarro = $total - $total_cigarro; //checa de atingiu o pedido minimo if ($total < $config['ped_minimo']) { echo "O pedido mínimo é de R$ ".$config['ped_minimo'].",00"; //se tem itens que nao entram na soma do pedido minimo e soma } else if (count($result) >= 1) { if ($checaCigarro < $config['ped_minimo']) { echo "Cigarros não entram na soma de R$ ".$config['ped_minimo'].",00 do pedido mínimo."; } ?> <!-- PRODUCT --> AQUI ENTRAM AS INFORMACOES DE CADA ITEM <!-- END PRODUCT --> <?php endforeach; ?>  
×

Important Information

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