Jump to content
acao

chamar função dentro de um ficheiro php

Recommended Posts

acao

boas

necessito de chamar uma função que está num ficheiro que tem mais funções.

se colocar a função num ficheiro consigo executa-la, mas para economizar ficheiros cria chama-la do ficheiro funções.php.

alguma dica?.

$(function(){
		 $("input[name='UserName']").blur( function(){ // disparar a ação no submit« $("input[name='NomeDoSubmit']").click( function(){»
				 var UserName = $("input[name='UserName']").val();
				 //alert(nomeUsuario);
				 $.post('Funcoes.php',{UserName: UserName},function(data){ // a função é «ValidarUsuario»
					 //alert (data);
					 $('#resultado').html(data);//onde vou escrever o resultado
				 });

		 });
 });// fim do jquery

Edited by acao

Share this post


Link to post
Share on other sites
Devexz

podes passar a função a ser executada como parâmetro.

$.post('Funcoes.php?a=funcaoaexecutar',{UserName: UserName},function(

funções.php

$funcaoaexecutar = $_GET['a'];

if($funcaoaexecutar == "dizerola") {
dizerOla();
}


function dizerOla() {

}

Edited by Devexz

Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
HappyHippyHippo

podes passar a função a ser executada como parâmetro.

javascript

$.post('Funcoes.php',
      {func: 'my_func',
       param1: 1,
       param2: 'string'},
      function() {
        // ...
      });

funções.php

if (isset($_POST['func']) &&
   function_exists($_POST['func'])) {
 $func = $_POST['func'];
 unset($_POST['func']);
 call_user_func_array($func, $_POST);
}

function my_func($param1, $param2) {
 $param1; // 1
 $param2; // 'string'
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
acao

boas

percebi a ideia,

sempre vou ter mais um bocado de cod para cada função chamada pelo javascript, mas sempre será melhor opção do que ter um ficheiro com um pequeno trecho de codigo.

vou tentar implementar e depois dou retorno.

obrigado

cumps

acao

edit: acrescentar info.

@Happyhippyhippo,

obrigado também pela contribuição, não era o caso desta situação mas é bem vinda, futuramente precisarei.

obrigado.

fartei-me de googlar e nada, apenas vi qualquercoisa identico à info do Devexz mas apenas no ficheiro php.

agradeço aos dois.

cumps

acao

Edited by acao

Share this post


Link to post
Share on other sites
Devexz

javascript

$.post('Funcoes.php',
   {func: 'my_func',
	param1: 1,
	param2: 'string'},
   function() {
	 // ...
   });

funções.php

if (isset($_POST['func']) &&
function_exists($_POST['func'])) {
 $func = $_POST['func'];
 unset($_POST['func']);
 call_user_func_array($func, $_POST);
}

function my_func($param1, $param2) {
 $param1; // 1
 $param2; // 'string'
}

só uma questão, qual o motivo de fazer unset ao POST?

edit: ah já percebi. :D

Edited by Devexz

Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
HappyHippyHippo

@Happyhippyhippo,

obrigado também pela contribuição, não era o caso desta situação mas é bem vinda, futuramente precisarei.

obrigado.

espera ... a solução que apresentei é a solução do @Devexz mas mais genérica e flexivel ... afinal o que pretendes ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
acao

boas

espera ... a solução que apresentei é a solução do @Devexz mas mais genérica e flexivel ... afinal o que pretendes ?

é mesmo isto o que pretendo.

apenas comentei que a do @Devexz serve e satisfaz o que necessito neste momento, e a tua solução mais genérica como referiste é bem vinda para quando necessitar de passar valores à função. que penso que é a alteração com a tua solução?

neste momento ainda não testei nada mas analisando o codigo é o que penso.

obrigado

cumps

acao

Share this post


Link to post
Share on other sites
Devexz

Do ponto de vista da programação a solução do @hyppo é a mais correcta, podes também chamar a função sem ter que adicionar parâmetros obrigatoriamente à mesma, alterando para esta linha de código:

call_user_func($func);

Mas melhor do que ninguém tu deves saber qual a maneira que se adequa ao teu ficheiro.php


Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
acao

boas

obrigado pelas ajudas, ainda não tive tempo de testar e alterar a programação, porque ande a resolver outras situações.

mas sei que vai funcionar.

cumps

acao

Share this post


Link to post
Share on other sites
HappyHippyHippo

Do ponto de vista da programação a solução do @hyppo é a mais correcta, podes também chamar a função sem ter que adicionar parâmetros obrigatoriamente à mesma, alterando para esta linha de código:

call_user_func($func);

Mas melhor do que ninguém tu deves saber qual a maneira que se adequa ao teu ficheiro.php

nop ... não existe obrigatoriedade na existência de argumentos no código que apresentei


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
acao

boas

@Happyhippyhippo será que me pode dar uma ajuda no cod que postou, a sua dica é passar dados por poste é melhor.

nem a função consigo chamar.

segue o cod que julgo mais correcto, embora já tenha tentado de maneira diferente.

$(function(){ // declaro o início do jquery
		   $("input[name='UserName']").blur( function(){
			   alert("input");
			   //  disparar a ação no submit« $("input[name='NomeDoSubmit']").click( function(){»
				 var NomeUserName = $("input[name='UserName']").val();
				  alert("nomeUsuario");
				    //$.post('VerificarUserName.php',{UserName: NomeUserName},function(data){
				    $.post('FuncoesAv.php',{func:'VerificarUserName1',param1:UserName,param2:NomeUserName},function(data){
					 //$.post('FuncoesAv.php?func=VerificarUserName',{UserName: NomeUserName},function(data){
						 //(data);
					    alert("passou na funçao");
					 $('#resultado').html(data);//onde vou escrever o resultado
				   });

		   });
    });// fim do jquery

if (isset($_POST['func']) &&
    function_exists($_POST['func'])) {
 header('location:../registoAv.php?PassouFuncoesAv', true, 303);
 $func = $_POST['func'];
 unset($_POST['func']);
 call_user_func_array($func, $_POST);
}

function VerificarUserName1($param1, $param2){
  $userName = $param2;
 include_once('ClassConexaoAv.php');
$NovaConexao = new ConexaoAv();
$stmt = $NovaConexao->prepare("SELECT UserName FROM usuariosav WHERE UserName ='$userName'");
    $stmt->execute();

    if (count($stmt->fetchAll())> 0){
	    echo 'O UserName já existe';
    } else{
	    echo 'o username ainda não existe';
    }

}

@Devexz a sua funcionou.

Share this post


Link to post
Share on other sites
HappyHippyHippo

talvez porque andaste a inventar e adicionaste código estranho ao exemplo que dei ...

aonde, no meu código, existe a chamada da função header no processamento do POST ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
acao

talvez porque andaste a inventar e adicionaste código estranho ao exemplo que dei ...

aonde, no meu código, existe a chamada da função header no processamento do POST ?

foi para saber se conseguia apanhar o isset. foi apenas para testar, porque até sei que com ele vai alterar a pagina.

achas que o javascript está correcto? «retirando os alert claro!»

(eu com esse codigo quero consultar a base dados e verificar se o usuario existe e retornar o echo que se encontra na função php.)

já tentei de varias maneiras mas ainda não consegui entrar na pagina aonde tenho a função.

cumps

acao

Edited by acao

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.