Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodolfo TI

Action de um botão chamando uma função ou outra

Recommended Posts

Bom dia pessoal não sou dos mais experientes em php e gostaria de criar uma função para a seguinte tarefa se o fornecedor for selecionado ele chama uma pagina php, se o fornecedor não for selecionado ele chama uma outra:

 

hoje trabalho assim

 

 

<input type="button" name="button" id="button" value="OK" onclick="javascript: if(document.form.projeto.value != 'x'){document.form.submit();}else{    alert('Selecione um projeto!');}">

 

Esse script é para se um projeto não for selecionado ele manda uma mensagem.

 

Devo criar uma função para submeter o form e chamar outra pagina ?

 

Não sei como fazer. alguém me da uma luz ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só com essas informações fica dificil ajudar, manda o código do formulário também.

 

Segue abaixo

 

 

 
<form name="form" id="form" method="post" action="grafico.php?indice=<?php print $_GET['indice'];?>">
<table align="center" border="1" bordercolor="#99CC00" cellpadding="0" cellspacing="0" width="100%">
  <tr><td><?php require_once "cabecalho.htm";?></td></tr>
  <tr>
    <td width="20%" valign="top" align="center" bgcolor="#003300">
        <table border="1" bordercolor="#99CC00" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
          <tr>
            <td colspan="2"><span style="float:left"><a href='selecionaIndicador.php' title='Selecionar outro tipo de indicador'>Voltar</a></span><center><span style='center'><strong> <?php if($_GET['indice'] == 1){print "Estado de Aceitação Atual RU1";}else if($_GET['indice'] == 2){print "Estado de Aceitação Atual RU1 + RU2 + RU4";}else if($_GET['indice'] == 3){ print "Evolução de estados de aceitação RU1";}else if($_GET['indice'] == 4){ print "Estados de aceitação por FORNECEDOR";}else if($_GET['indice'] == 5){ print "Synthèse Livrables";} ?> </strong>         </span></center></td>
          </tr>
          <tr>
            <td width="147"><div align="left"><strong>Projeto:</strong></div></td>
            <td width="160"><div align="left"> <select name="projeto" id="projeto" class="caixa">
                    <?php  if ($_SESSION['tipo_usuario'] == 'master') {$rsfornecedor = $conn->select("projeto");} else { $rsfornecedor = $conn->select("projeto,projeto_usuario","","projeto_usuario.projeto=projeto.descricao and projeto_usuario.usuario='".$_SESSION['login']."'");}
            if (is_array($rsfornecedor)){
                ?> <option value="x"> </option><?php
                foreach($rsfornecedor as $e){?>
                    <option value="<?php print $e['descricao']?>" <?php if ((isset($_POST['projeto']) && $_POST['projeto'] == $e['descricao']) || (isset($_GET['projeto']) && $_GET['projeto'] == $e['descricao'])){ print "selected='selected'"; }?>> <?php print $e['descricao']?> </option>
                    <?php  }
            }?>
                  </select></div></td>
          </tr>
          <tr>
            <td><div align="left"><strong>Metier:</strong></div></td>
            <td><div align="left">
              <select name="metier" id="metier" class="caixa">
                <option></option>
                <option value="EEVM" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'EEVM'){ print "selected = selected"; } ?>>EEVM</option>
                <option value="EQX" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'EQX'){ print "selected = selected"; } ?>>EQX</option>
                <option value="HPCM" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'HPCM'){ print "selected = selected"; } ?>>HPCM</option>
                <option value="ILDM" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'ILDM'){ print "selected = selected"; } ?>>ILDM</option>
                <option value="MEMT" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'MEMT'){ print "selected = selected"; } ?>>MEMT</option>
                <option value="SOV" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'SOV'){ print "selected = selected"; } ?>>SOV</option>
                <option value="STR" <?php if(isset($_GET['metier']) && $_GET['metier'] == 'STR'){ print "selected = selected"; } ?>>STR</option>
              </select>
            </div></td>
          </tr>
          <?php  if (isset($_GET['indice']) && ($_GET['indice'] == 1 || $_GET['indice'] == 3)){ ?>
          <tr>
            <td><div align="left"><strong>Aceitador:</strong></div></td>
            <td><div align="left">
              <select name="aceitador" id="aceitador" class="caixa">
                 <option></option>
                  <?php  $rsfornecedor = $conn->select("participante","","","nome_participante");
                    if (is_array($rsfornecedor)){
                        foreach($rsfornecedor as $e){?>
                 <option value="<?php print $e['nome_participante']?>" <?php if (isset($_POST['aceitador']) && $_POST['aceitador'] == $e['nome_participante']){ print "selected='selected'"; }?>> <?php print $e['nome_participante']?> </option>
                    <?php  }
                    }?>
              </select>        
            </div></td>
          </tr>
          <?php  }if (isset($_GET['indice']) && ($_GET['indice'] == 1 ||  $_GET['indice'] == 3|| $_GET['indice'] == 4)){ ?>
          <tr>
            <td><div align="left"><strong>Fornecedor:</strong></div></td>
            <td><div align="left">
              <select name="fornecedor" id="fornecedor" class="caixa">
                 <option></option>
                  <?php  $rsfornecedor = $conn->select("fornecedor","","","nome_fornecedor");
                    if (is_array($rsfornecedor)){
                        foreach($rsfornecedor as $e){?>
                 <option value="<?php print $e['id_fornecedor']?>" <?php if (isset($_POST['fornecedor']) && $_POST['fornecedor'] == $e['id_fornecedor']){ print "selected='selected'"; }?>> <?php print $e['nome_fornecedor']?> </option>
                    <?php  }
                    }?>
              </select>        
            </div></td>
          </tr>
          <?php }?>
          <tr>
            <td colspan="2" align="center"><label>
              <input type="button" name="button" id="button" value="OK" onclick="javascript: if(document.form.projeto.value != 'x'){document.form.submit();}else{    alert('Selecione um projeto!');}">
            </label></td>
          </tr>
        </table>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi direito, deve ser isso.

 

 

<form action="" method="POST" onsubmit="validaAction(this);return false;" />
</form>

 

agora no js vc verifica se o usuario selecinou o fornecedor ou não

 

function validaAction(frm){
    if(frm.fornecedor.value == ''){
         frm.action = 'sem_fornecedor.php';
    }else{
       frm.action = 'com_fornecedor.php';
    }
 
   frm.submit();
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

se entendi direito, deve ser isso.

 

 

<form action="" method="POST" onsubmit="validaAction(this);return false;" />
</form>

 

agora no js vc verifica se o usuario selecinou o fornecedor ou não

 

function validaAction(frm){
    if(frm.fornecedor.value == ''){
         frm.action = 'sem_fornecedor.php';
    }else{
       frm.action = 'com_fornecedor.php';
    }
 
   frm.submit();
 
}

Amigo ainda não testei mas é isso mesmo que preciso amanha testo e lhe dou um retorno, tive uma certa dificuldade em abstrair isso já que o código original fazia tudo pelo propio action do botão, isso não é muito comum/usual né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou com duvida em qual parte?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou com duvida em qual parte?

 

 

No código orignal, o qual eu postei, por usar o action direto com js, achei estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

geralmente eu evito misturar js(php tbm) com html, jogo sempre o codigo numa função

 

<input type="button" name="button" id="button" value="OK"
 onclick="
javascript: if(document.form.projeto.value != 'x'){document.form.submit();
}else{    alert('Selecione um projeto!');}">

 

poderia ficar assim:

 

//js
function valida(){
   var fornecedor = document.getElementById('projeto').value;
   if(fornecedor != 'x'){

    document.forms[0].submit();

   }else{
     alert('Selecione um projeto!');
   }
}

<input type="button" name="button" id="button" value="OK"
 onclick="valida();" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

geralmente eu evito misturar js(php tbm) com html, jogo sempre o codigo numa função

 

<input type="button" name="button" id="button" value="OK"
 onclick="
javascript: if(document.form.projeto.value != 'x'){document.form.submit();
}else{    alert('Selecione um projeto!');}">

 

poderia ficar assim:

 

//js
function valida(){
   var fornecedor = document.getElementById('projeto').value;
   if(fornecedor != 'x'){

    document.forms[0].submit();

   }else{
     alert('Selecione um projeto!');
   }
}

<input type="button" name="button" id="button" value="OK"
 onclick="valida();" />

Eu preciso chamar as duas no Onclick depois vi que usou o seguinte em uma delas:

 

 

 

function validaAction(frm){
O trecho (frm) significa que isso é válido pra todo o formulário ou ali deveria ser o id do form que estou usando ?

 

Fiz assim

 

 

 
<input type="button" name="button" id="button" value="OK" onclick="valida();validaAction(frm);">
 

 

 

function valida(){
   var fornecedor = document.getElementById('projeto').value;
   if(fornecedor != 'x'){

    document.forms[0].submit();
    validaAction(frm);
    alert('Passei aqui');

   }else{
     alert('Selecione um projeto!');
     alert('Passei aqui');
   }
}


function validaAction(frm){
    if(frm.fornecedor.value == ''){
         frm.action = 'sem_fornecedor.php';
         alert('Passei aqui no sem fornecedor');
    }else{
       frm.action = 'com_fornecedor.php';
       alert('Passei aqui no com fornecedor');
    }
 
   frm.submit();
   alert('Passei aqui no submit');
 
}
 

 

Mas ele não passa no de baixo :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

são exemplos diferentes vc usa um ou outro os dois juntos não.

 

no primeiro exemplo vc chama a função no onsubmit(), usando um input submit (ou no onclick do button).


<form action="" method="POST" onsubmit="validaAction(this);return false;" /> </form>

 

 

Usando o button o que muda é como pegar a referencia do form:

 

document.forms[0]

 

 

 

o this é a referencia do formulario todo, que na função(validaAction) chamamos de frm. ex: frm.campo.value.

 

validaAction(this)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim:

 

 

 
function validaAction(){
    var projeto = document.getElementById('projeto').value;
    if(projeto!='x'){
        var fornecedor = document.getElementById('fornecedor').value;
        if(fornecedor ==''){
            action = 'indicadorEAForn.php';
        }else{
            action = 'indicadorEAFornUn.php';
        }
        document.forms[0].submit();
    }
    else{
     alert('Selecione um projeto!');
    }
}
 

 

é incorreto ?

 

Não entra na segunda opção fiz uma sintese das duas funções ? Foge dos padrões ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atualmente o script está da seguinte forma:

 

 

function validaAction(frm){
    var projeto = document.getElementById('projeto').value;
    if(projeto!='x'){
        var fornecedor = document.getElementById('fornecedor').value;
        if(fornecedor.lenght == 0){
            action = 'indicadorEAForn.php';
        }
        else{
            action = 'indicadorEAFornUn.php';
        }
        document.forms[0].submit();
    }
    
    else{
     alert('Selecione um projeto!');
    }
    
}

 

e o action ta assim:

 

 

<input type="button" name="button" id="button" value="OK" onclick="validaAction(this);">

 

Não ta passando no else ? O que poder ser ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixe somente assim:

 

 

function valida(){
    var projeto = document.getElementById('projeto').value;
    
    if(projeto!='x'){
        var fornecedor = document.getElementById('fornecedor').value;
        if(fornecedor.lenght == 0){
            document.forms[0].action = 'indicadorEAForn.php';
        }else{
            document.forms[0].action = 'indicadorEAFornUn.php';
        }
    }else{
        alert('Selecione um projeto!');
        return false;
    }
    
    document.forms[0].submit();
    
}
 
 

<input type="button" name="button" id="button" value="OK" onclick="valida();" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

deixe somente assim:

 

 

function valida(){
    var projeto = document.getElementById('projeto').value;
    
    if(projeto!='x'){
        var fornecedor = document.getElementById('fornecedor').value;
        if(fornecedor.lenght == 0){
            document.forms[0].action = 'indicadorEAForn.php';
        }else{
            document.forms[0].action = 'indicadorEAFornUn.php';
        }
    }else{
        alert('Selecione um projeto!');
        return false;
    }
    
    document.forms[0].submit();
    
}
 
 

<input type="button" name="button" id="button" value="OK" onclick="valida();" />

 

Por algum motivo está passando diretamense no else, parece que não está buscando o número de fornecedores, aí só chama a pagina FornUn, tem alguma idéia do que possa ser para que eu olhe ?

Ja verifiquei a passagem de parametro com alerts entre os if's :S

 

Visualmente não consigo enxergar o que ta dando problema, no select que busca os forn no banco pode ser

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.