• 0
Sign in to follow this  
melima

Invocar função php no action do form

Question

Boa tarde.

já realizei varias pesquisas, mas não consigo esclarecer a minha duvida. Tenho um ficheiro php com várias funções uma delas para inserir dados na BD Mysql, o que eu pretendo é no Action do form invocar apenas essa função e não o ficheiro php. No inicio faço o include do respectivo ficheiro mas depois ao invocar só a função no action ele não reconhece. Envio o meu codigo para se perceber melhor.

<?php

//Ativa o Buffer que armazena o conteúdo principal da página

ob_start();

require_once 'Common.php';

require_once 'Classe_Colaborador.php';

?>

<p align="center"><?php echo $lang['PAGE_TITLE_ADMIN2']; ?></p>

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<script type=text/javascript">

function show_alert()

{

alert("Inserido com sucesso");

}

</script>

<script>

function doPost(FormName,actionName){

var hiddenControl = document.getElementById('Classe_Colaborador');

var theForm = document.getElementById(formName);

hiddenControl.value = actionName;

theForm.submit();

}

</script>

<div>

<form action="" method="post" id="formulario" name="formulario">

<div align="center">

<b class="formulario">Nome</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input name="Nome" type="text" id="Nome"/>

<br />

<br />

<b class="formulario">SAP</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input name="SAP" type="text" id="SAP"/>

<br />

<br />

<b class="formulario">Email</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input name="Email" type="text" id="Email"/>

<br />

<br />

<b class="formulario">Conta Windows</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<input name="Conta" type="text" id="Conta"/>

<br />

<br />

<b class="formulario">Resp. Hierárquico</b>&nbsp;

<input name="Chefe" type="text" id="Chefe"/>

<br />

<br />

<br />

<br />

<input align="center" name="Submit" type="submit" value="Gravar" class="Botao" />

<input align="center" name="Cancel" type="reset" value="Cancelar" class="Botao"/>

</div>

</form>

</div>

<?php

// pagemaincontent recebe o conteudo do buffer

$pagemaincontent = ob_get_contents();

// Descarta o conteudo do Buffer

ob_end_clean();

/* Atribuição das Variáveis da página principal

* Lembrando que podem ser colocadas novas variáveis,

* conforme necessidade */

$pagetitle = "Titulo desta página";

//Include com o Template

include("./MasterPage.php");

?>

Ficheiro com a função php

<?

// Chama por include a Classe de Conex�o que criamos

include 'Classe_Conexao.php';

function getData(){

// Instanciamos o Objeto

$mysql = new conexao;

// Executa a Query desejada

//$listaclientes = $mysql->sql_query("select SAP, Nome from colaborador ");

$listaclientes = $mysql->sql_query("SELECT colaborador.SAP, colaborador.Nome, avaliacao.Status FROM colaborador INNER JOIN avaliacao ON (colaborador.ID=avaliacao.ID_Colaborador)");

// Aqui criamos um objeto chamado $clientes com os resultado

// da query que fizemos acima.

$data = array();

while($clientes = mysql_fetch_array($listaclientes)){

$data[]=$clientes;

}

return $data;

}

function Insert(){

$mysql= new conexao;

$Nome = $_POST['Nome];

$SAP = $_POST['SAP'];

$Email= $_POST['Email'];

$Conta= $_POST['Conta'];

$Chefe = $_POST['Chefe'];

$query= $mysql->sql_query("INSERT INTO Colaborador(Nome,SAP,Email,Conta_Windows,Chefe) value('$Nome','$SAP','$EMAIL','$Conta','$Chefe')");

mysql_query($query);

if($query){

echo "<script> alert('Dados inseridos com sucesso');</script>";

echo("Dados Inseridos com sucesso");

header("location:Novo_colaborador_View.php");

}

else{

echo("Erro ao inserir dados!");

}

}

function Lista(){

$mysql = new conexao;

$listaclientes = $mysql->sql_query("SELECT colaborador.Nome FROM colaborador ");

// Aqui criamos um objeto chamado $clientes com os resultado

// da query que fizemos acima.

$data = array();

while($clientes = mysql_fetch_array($listaclientes)){

$data[]=$clientes;

}

return $data;

}

function Edita()

{

$Nome=$_POST['Combo'];

$SAP=$_POST['SAP'];

$Email=$_POST['Email'];

$Conta=$_POST['Conta'];

$Chefe=$_POST['Chefe'];

$mysql= new conexao;

$query = mysqli_query("UPDATE colaborador SET SAP='$SAP', Email='$Email',Conta_Windows='$Conta',Chefe='$Chefe' WHERE Nome='$Nome'");

if($query){

echo "<script> alert('Dados inseridos com sucesso');</script>";

echo("Dados Inseridos com sucesso");

header("location:Editar_Colaborador.View.php");

}

else{

echo("Erro ao inserir dados!");

}

}

?>

Aguardo uma resposta.

Cumprimentos,

Melima

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Melima,

Acho meio difícil fazer a chamada dessa função no action. O atributo action recebe por padrão uma URL,um destino para o qual os dados serão enviados.Não creio que seja possível chamar uma função no 'action'.

Você poderia fazer algo como algum script AJAX,mas nesse caso,não teria callback e teria que executar o submit.

Funcionaria assim: Você cria uma página para executar a função,recebendo as devidas variáveis. Nessa página,instancia a classe e executa o que quer.

No action,você coloca a URL para essa página.

Isso é possível.

Abraços.

Share this post


Link to post
Share on other sites
  • 0

você pode atribuir por variavel get e por uma condição.

eu não sei como é o teu sistema mas vamos supor que para acessar esse aruqivo seja formulario.php

então você pode fazer o seguinte

formulario.php?var=lista

(dentro do codigo php você inicia assim.)

(depois verifica qual funcao ativar)

<?php

$pagina = $_GET['var'];

if($pagina == 'lista') {

 Lista();

} else if($pagina == 'editar') {

Edita();

} else if($pagina == 'cadastrar') {

insert()

}

assim você verifica pela URL e chama a função de acordo com o que foi passado.

Share this post


Link to post
Share on other sites
  • 0

Bom dia.

Peço desculpa por demorar tanto tempo a responder, mas só hoje me foi possivel testar o código! Funciona na perfeição, é mesmo o que eu precisava.

Obrigada e podem encerrar o tópico.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this