Jump to content
Biel.

form action

Recommended Posts

Olá pessoal. Abaixo temos dois submit.
gostaria que 
ao pressionar item1 pegasse  form pegou_pagina_2.php ou
ao pressionar Enviar pegasse form pegou_pagina_1.php

<?php	
if (isset($_POST['valor']) ){
$valor = $_POST['valor'];  
}
?>
<?php
$a=1;
$b=2;
?>

<?php if($a==1){?>
<form action="pegou_pagina_1.php" method="post" >
<?php }?>

<?php if($b==2){?>
<form action="pegou_pagina_2.php" method="post" >
<?php }?>

<select name="valor" size='2' onChange="this.form.submit()">
  <option value="" selected ></option>
  <option value="item1" >item1</option>
</select>
<br>

<input type="submit" name="aprendiz" value="Enviar" />	

</form>

 

Share this post


Link to post
Share on other sites

Não sei qual o motivo da "gabiarra", mas acredito que <input type="hidden" /> no formulário resolveria apenas indicado seu value.

 

Enfim para o procedimento pelo que relatou é simples....

<form action="pegou_pagina_1.php" id="pelo_botao" method="POST">
</form>

<form action="pegou_pagina_2.php" id="pelo_seletor" method="POST">
</form>

<select id="seletor">
    <option value="" selected=""></option>
    <option value="item1">item1</option>
</select>

<button onclick="peloButton()">Enviar</button>

<script>
    function peloSeletor(e) {
        if (e.target.value == 'item1') {
            document.getElementById('pelo_seletor').submit();
        }
    }
    
    function peloButton() {
        document.getElementById('pelo_botao').submit();
    }
    
    document.getElementById('seletor').addEventListener('change', peloSeletor, false);
</script>

 

Share this post


Link to post
Share on other sites
Em 04/01/2021 at 04:54, Omar~ disse:

Não sei qual o motivo da "gabiarra", mas acredito que <input type="hidden" /> no formulário resolveria apenas indicado seu value.

 

Enfim para o procedimento pelo que relatou é simples....


<form action="pegou_pagina_1.php" id="pelo_botao" method="POST">
</form>

<form action="pegou_pagina_2.php" id="pelo_seletor" method="POST">
</form>

<select id="seletor">
    <option value="" selected=""></option>
    <option value="item1">item1</option>
</select>

<button onclick="peloButton()">Enviar</button>

<script>
    function peloSeletor(e) {
        if (e.target.value == 'item1') {
            document.getElementById('pelo_seletor').submit();
        }
    }
    
    function peloButton() {
        document.getElementById('pelo_botao').submit();
    }
    
    document.getElementById('seletor').addEventListener('change', peloSeletor, false);
</script>

 

 

Omar, funcionou, mas veja: Para o que quero fazer tem que ter duas action com apenas (um fechamento  </form> ) e o  select tem que estar dentro do fechamento </form> .  Outro detalhe:  Tem como fazer o que quero em php com regra if ? Veja como está o código que postei. Obrigado !

Share this post


Link to post
Share on other sites

Cogitei duas questões:

  • Você quer um form dentro de outro? Não é possível, existe uma arquitetura que todo HTML deve seguir.
  • Quer mudar o action do form de acordo com o valor do PHP? Isso é possível pois o html é entregue pelo php da forma que compilar ele.

Mas com o que mostrou não dar para entender a finalidade. Porque necessita dos critérios para designar o action do form e isso não dar para ter noção com o que postou.

 

Entretanto se indo nesse no conceito que o seletor submete de um jeito e o botão de outro o próprio javascript pode manipular a tag <form>.

<form id="identificador" method="POST">
    <select id="seletor">
        <option value="" selected=""></option>
        <option value="item1">item1</option>
    </select>
    <button onclick="peloButton()">Enviar</button>
</form>

<script>
    var formulario = document.getElementById('identificador');
    function peloSeletor(e) {
        if (e.target.value == 'item1') {
            formulario.setAttribute('action', 'pegou_pagina_1.php');
            formulario.submit();
        }
    }
    function peloButton() {
        formulario.setAttribute('action', 'pegou_pagina_2.php');
        formulario.submit();
    }
    document.getElementById('seletor').addEventListener('change', peloSeletor, false);
</script>

 

 

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

  • Similar Content

    • By Biel.
      Olá pessoal. Direto ao ponto 
      A primeira instrução [a-z]{1,3} especifiquei min 1 e max 3 letras para validar 
      A segunda instrução (.[a-z]{1,3})? coloquei na mesma $regex porque pode ou não existir na $campoDeTexto
      Como fazer a primeira instrução não enxergar a segunda instrução ou seja entender que seu máximo é até 3 letras e não até 8 letras  Obrigado 
      <?php //$campoDeTexto = "aaa.z"; // pode ou não existir a 2º instrução no campoDeTExto ou seja .z ou .zz ou .zzz $campoDeTexto = "aaaaaaaa"; $regex = '/^[a-z]{1,3}(.[a-z]{1,3})?$/i'; if (preg_match($regex, $campoDeTexto)){ echo "valida "; } else{ echo "nao valida"; } ?>  
    • By Biel.
      Olá pessoal. Direto ao ponto.  Estou tentando replicar $cores para dentro do while e quando der um print $cores os dados exibir normalmente na tela.. A ideia é replicar $cores para dentro do while e não deixar $cores  dentro do while.  Muitos já falaram que isso é impossível. alguém discorda? Como resolver o problema ? Obriigado !
      tabela1 cores green blue red <?php $cores = $linha['cores']; ?> <?php $sql = mysqli_query($con, "SELECT * FROM tabela1 "); while($linha = mysqli_fetch_array($sql)){ ?> <?php } ?>  
    • By Biel.
      Olá pessoal. Direto ao ponto. O código php abaixo retorna este resultado:
      1-blue 2-blue 3-blue 4-blue 5-blue 6-green 7-green 8-green 9-green 10-green 11-green 12-green 13-green 14-red 15-red 16-red 17-orange 18-orange 19-orange 20-orange Como faço para retornar este resultado
      1-blue-1 2-blue-2 3-blue-3 4-blue-4 5-blue-5 6-green-1 7-green-2 8-green-3 9-green-4 10-green-5 11-green-6 12-green-7 13-green-8 14-red-1 15-red-2 16-red-3 17-orange-1 18-orange-2 19-orange-3 20-orange-4 <?php for($i=1; $i<=20; $i++){ if($i<=5){ $a=$i.'-blue'; } if($i>5 && $i <=13){ $a=$i.'-green'; } if($i>13 & $i <=16){ $a=$i.'-red'; } if($i>16 && $i<=20){ $a=$i.'-orange'; } print $a.'<br>'; } ?>  
    • By Biel.
      Olá pessoal. Direto ao ponto. O código abaixo imprime todos os dados dentro do while . Existe alguma forma de imprimir todos os dados fora do while ?
      tab_aprendiz cores green yellow blue brown orange <?php $sql = mysqli_query($con, "SELECT * FROM tab_aprendiz"); while($linha=mysqli_fetch_array($sql)){ $cores = $linha['cores']; echo $cores.'<br>'; } ?>  
    • By Biel.
      Olá pessoal . Direto ao ponto. Abaixo tem duas tabelas unidas. Como fazer retornar a quantidade correta de registros  na linha indice 1 
      Gostaria de imprimir na tela este resultado 
      tab_aprendiz tem 2 registros
      tab_aluno tem 3 registros
       
      tab_aprendiz id indice nome 93 1 joao 94 1 lucas 95 2 mateus 96 2 silva tab_aluno id indice carro 67 1 gol 68 1 corsa 69 1 palio 70 2 monza 71 2 vectra 72 2 uno ...
      <?php $sql = mysqli_query($con, "SELECT * FROM tab_aprendiz INNER JOIN tab_aluno ON tab_aprendiz.indice = tab_aluno.indice WHERE indice = '1' "); $quantidade_de_dados1 = mysqli_num_rows($sql); $quantidade_de_dados2 = mysqli_num_rows($sql); echo 'tab_aprendiz tem' .$quantidade_de_dados1. 'registros'; echo 'tab_aluno tem' .$quantidade_de_dados2. 'registros'; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.