Ir para o conteúdo
acao

chamar função dentro de um ficheiro php

Mensagens Recomendadas

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

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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() {

}

Editado por Devexz

Ás vezes, mais vale deixar a assinatura em branco.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por Devexz

Ás vezes, mais vale deixar a assinatura em branco.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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


Ás vezes, mais vale deixar a assinatura em branco.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.