Jump to content

Problema no evento onclick


DeFigueiredo

Recommended Posts

Boas Pessoal,

é o seguinte eu criei um botão que ao ser accionado faz duas tarefas que sao accionadas através do evento onclick.

<input type="button" name="confirmaRecado" id="confirmaRecado" title="Executado com Sucesso" value="Executado"
        onclick="if (confirm(\'O recado, '.$num[1].'-'.$recado[0].', foi executado com sucesso?\')) location.href = \'./confirmarRecado.php?confirma=true&idRecado='.$recado[0].'\'; location.href = \'./clienteConfirmaRecados.php?idemp='.$idemp.'\'"/>

O código apresentado está dentro do Php, o que faz é quando clica no botao, ele diz que uma determinada coisa, e o seu estado passa a executado, e ao mesmo tempo, chama outro evento que vai mandar um email a dizer que essa determinada coisa foi executada.

So que acontece que ele só esta a enviar o email, nao esta a mudar o estado, mas faz a pergunta que lá se encontra, apenas nao muda o estado, mas se eu tirar a parte do evento de chamar a página para enviar o email, ja muda o estado para o que quero.

Não sei se estou a fazer algo errado, mas isto já funcionou, mas agora só faz uma das accoes. Apesar de chamar as duas.

Edited by brunoais
geshi

Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

estás a fazer alguma operação errada no script chamado pela acção do evento.

para mais resolução é necessário apresentares esse código

ps : espera .. agora vi melhor o código.

estás fazer o browser chamar dois scripts consecutivamente ???

é claro que o segundo nunca será executado ...

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Boas...

este é um dos ficheiros que é chamado. que é para actualizar o estado...

if(isset($_GET["idRecado"]) && isset($_GET["confirma"])){
$idRecado = $_GET["idRecado"];
$confirma = $_GET["confirma"];

foreach($recs->get_Recados() as $recado)
if($recado->get_id() == $idRecado){
$idemp = $recado->get_idEmpresa();

if($confirma == "true"){
 $rows = $recs->confirmaEstadoRecado($idRecado, "Confirmado");

 if($rows){
 $recs->actualizaHistoricoRecado($idRecado, $_SESSION["id"], "Execução do recado confirmada pelo Responsavel Recados");
 header("Location: detalhesEmpresa.php?idemp=".$idemp);
 }

}else{
 $rows = $recs->confirmaEstadoRecado($idRecado, "Cancelado");

 if($rows){
 $recs->actualizaHistoricoRecado($idRecado, $_SESSION["id"], "Execução do recado cancelada pelo Responsavel Recados");
 header("Location: detalhesEmpresa.php?idemp=".$idemp);
 }
}
}
}else
header("Location: home.php");

O outro, que é para enviar o email, é este....

if(isset($_GET["idemp"])){
$idemp = $_GET["idemp"];
foreach($emps->get_empresas() as $empresa)
if($empresa->get_id() == $idemp){
$idCliente = $empresa->get_cliente();
$nomeEmp = $empresa->get_nome();

foreach($users->getUtilizadores() as $user){
 if($user->get_id() == $idCliente){
 $email = $user->get_email();
 $cliente = $user->get_nome();
 }

 if($user->get_id() == $_SESSION["id"])
 $nome = $user->get_nome();
}

if(mail($email, 'recadosFigueiredo - Execução de Recados',
 'Caro '.$cliente.', na sequência de ser o cliente associado à empresa, '.$nomeEmp.', da nossa aplicação de gestão, recadosFigueiredo, o Responsável de recados da sua empresa, '.$nome.', vem assim indicar-lhe que mais um recado foi executado com sucesso! Obrigado', 'From: noreply@recadosFigueiredo.pt'))
 header("Location: detalhesEmpresa.php?idemp=".$idemp);
}
}else
header("Location: home.php");

O que acontece, é que se deixar só o primeiro script, de mudar o estado, funciona na perfeicao, mas como quero que mande tambem o email, adiciono o segundo evento, mas ai o que faz é so mandar o email, embora questione o utilizador se deseja mesmo confirmar a execução da accao, como é pedido através do if confirm, dentro do evento.

Edited by apocsantos
geshi

Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

ps : espera .. agora vi melhor o código.

estás fazer o browser chamar dois scripts consecutivamente ???

é claro que o segundo nunca será executado ...

se queres executar dois pedidos diferentes, deverias usar AJAX. desde modo o browser não salta para o primeiro script ignorando o segundo.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Mas ele faz os dois. so que apenas executa na perfeiçao o segundo.

E pelo que pesquisei é possivel associar 2 eventos ao onclick.

Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

este é o teu código

// pedido de confirmação
if (confirm('O recado, xpto-xpto, foi executado com sucesso?'))
   // estás a alterar o location aqui
   location.href = './confirmarRecado.php?confirma=true&idRecado=xpto';
// estás a sobrepor o location novamente ....
location.href = './clienteConfirmaRecados.php?idemp=xpto';

como disse, se queres os dois :

se queres executar dois pedidos diferentes, deverias usar AJAX.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Boas, o que eu pensei tambem, foi invocar o codigo do segundo fcheiro dentro do primeiro... e assim da mesma forma resolveria-me o problema, porque ao clicar naquele botão ele tem sempre de executar aquelas accoes. Mas nao sei se será correcto. E da maneira que experimentei, ele executou, mas nao invocou o segundo ficheiro.

Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
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.