Ir para conteúdo

Arquivado

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

DougCoder

Passar dados de um form para outro form na mesma página

Recommended Posts

Boa madruga a todos,

 

Pessoal, me deparei com uma barreira aqui.

 

Tenho um SQL parrudo que irá fazer uma busca em várias tabelas de acordo com o ID dos itens selecionados caso não seja nulo. Até ai tudo bem. O problema é que eu não estou conseguindo passar esses ID de jeito nenhum.

 

Eu tenho um form e neste form tem uma tabela com alguns selects puxando do banco, segue abaixo o código de um dos selects:

		<td> 
                <!-- Disciplina -->
                
                <div class="form-group">
                <label for="basic2" class="col-lg-2 control-label"></label>
                    <div class="col-lg-11">
                        <select name="id-disciplina" id="seldisciplina" class="selectpicker show-tick form-control" data-live-search="true" multiple data-max-options="1">
                        
                    <?php 
                    $sql = "select * from disciplinas"; 
                    $res = Connection::getInstance()->query($sql);
                      
                    while($linha=mysqli_fetch_array($res)) { ?>
                    <option value="<?php echo $linha["DIS_ID"];?>"><?php echo $linha["DIS_NOME"]; ?></option>
                    <?php } ?>
                   
                    
                    </select>
                    </div>
                </div>
                </td>

OK...

 

No form onde ele está presente, eu tenho uma action que joga os dados para um arquivo .php que realiza o upload de um arquivo e os inserts nas tabelas com as info relacionadas a este arquivo. Os dados passam tudo muito lindo.

 

AGORA QUE VEM O PROBLEMA:

 

Eu preciso pegar estes mesmos dados e ao invés de jogá-lo em outro arquivo, devo usá-lo no mesmo arquivo para alimentar o meu SQL. Ou até mesmo posso jogá-lo para outro arquivo, mas daí o arquivo deveria ser diferente do meu de upload certo? Como faço essa magia?

 

Já tentei todas gambiarras possíveis com javascript e não da certo...

 

DETALHE:

 

O meu botão Buscar pertence a outro form, porém eu tb posso colocá-lo no mesmo form(e ele era). Então imaginei fazer passando os dados do form 1 para o form 2 (da mesma página) via post, variáveis php, js, não consegui. Tem alguma forma? Ou até mesmo uma forma melhor para se fazer isso? Sem ajax.

 

Talvez nem precise passar o dado de um form para outro, mas também como armazenar estes ID para serem acessados em seguida?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa ver se entendi. vc tem dois forms numa mesma pagina ...

vc preenche o primeiro e clicar em um botão e vai pra outro form.. com os dados do primeiro form ...

 

é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se eu entendi, mas para pegar os dados na mesma página do form é só não colocar o action ex: <form action="" method="post">

 

pra pegar, segue um exemplo para ver o que você "tem" em mãos print_r($_REQUEST); exit;//essa linha vai lê mostrar os dados enviados via GET e POST e o exit vai matar o programa, é um debug simples. ai se quiser receber o valor do form é só $variavel = $_REQUEST['name da tag que deseja pegar']; ex: <input type="text" name='teste'> fica $variavel = $_REQUEST['teste'];

AH post todo o código relacionado a isso, não vi o seu form.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa ver se entendi. você tem dois forms numa mesma pagina ...

você preenche o primeiro e clicar em um botão e vai pra outro form.. com os dados do primeiro form ...

 

é isso?

Isso eu tenho funcionando belezinha. Dai o meu primeiro form da página principal, ele joga para o arquivo que realiza o upload ok, nada a mexer nisso.

 

Só que, se o usuário selecionar os dados e ao invés de clicar para fazer upload ele clicar no botão BUSCAR, eu preciso pegar estes dados e realizar a busca ao invés de cadastrar um arquivo com eles entendeu?

 

Como faço para pegar os dados deste primeiro form e manipular eles em outro form dentro da mesma página php? Nem preciso que seja através da tag do form mas sim do dado que possui dentro do select que postei acima, isto pode ser via variável, sei la... não achei nada relacionadod

 

 

@junior.vieira ainda vou ver sua dica, to meio atrasado pro trampo vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só lembrando, que para tratar os inputs no mesmo arquivo este arquivo tem q ser .php

 

Faz tipo isso man, html -> <button name="BUSCAR">buscar</button>

Botão dois <button name="UPLOAD">upload</button>

PHP-> if(isset($_REQUEST['BUSCAR']])){

ENTÃO TRATO AS INFORMAÇÕES....

}

else if(isset($_REQUEST['UPLOAD'])){

ENTÃO..TRATO O EVENTO/ACAO DE UPLOAD

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só lembrando, que para tratar os inputs no mesmo arquivo este arquivo tem q ser .php

 

Faz tipo isso man, html -> <button name="BUSCAR">buscar</button>

Botão dois <button name="UPLOAD">upload</button>

PHP-> if(isset($_REQUEST['BUSCAR']])){

ENTÃO TRATO AS INFORMAÇÕES....

}

else if(isset($_REQUEST['UPLOAD'])){

ENTÃO..TRATO O EVENTO/ACAO DE UPLOAD

}

 

OPA,

 

Com request o botão faz a função em php, vai ser útil eu precisava disso também muito obrigado !!!

 

Mas tipo... Acho que não posso dividir da forma que vc falou, pelo menos não compreendi como ficaria essa "divisão" por exemplo:

<form method="post" action="recebe_upload.php" enctype="multipart/form-data">
    <div id="topo-tabela" >
        <table class="table table-action table-striped table-bordered table-hover table-responsive">
        <thead>
        <th>Nome da Obra</th>
        <th>Autor</th>
        <th>Tema</th>
        <th>Editora</th>
        <th>Disciplina</th>
        <th>Palavras-Chave</th>
        <th>Tipo de Arquivo</th>
        <th>Ações</th>
        </thead>

	<tbody>
      
            <tr>
		<td> 
                <!-- Disciplina -->
                
                <div class="form-group">
                <label for="basic2" class="col-lg-2 control-label"></label>
                    <div class="col-lg-11">
                        <select name="id-disciplina" id="seldisciplina" class="selectpicker show-tick form-control" data-live-search="true" multiple data-max-options="1">
                        
                    <?php 
                    $sql = "select * from disciplinas"; 
                    $res = Connection::getInstance()->query($sql);
                      
                    while($linha=mysqli_fetch_array($res)) { ?>
                    <option value="<?php echo $linha["DIS_ID"];?>"><?php echo $linha["DIS_NOME"]; ?></option>
                    <?php } ?>
                   
                    
                    </select>
                    </div>
                </div>
                </td>
 </tr> </tbody> </table> </div> </form>

O form fecha no último campo da tabela, até ai ok... Mas esta tabela com selects tem a seguinte função:

 

1 - Se o usuário escolhe os dados dela, libera o botão upload, ele pode fazer upload do arquivo e cadastrar o arquivo vinculado aos campos, ou seja, cadastro o PDF de redes neurais, vinculado ao autor imasters, da editora imasters2, do tipo de arquivo monografia, da disciplina redes III, etc. Dai ele faz upload e cadastra o arquivo, certo?

 

2 - Se o usuário escolhe os dados dela mas não quer fazer upload, ele clica no botão busca e os dados que ele selecionou é realizado uma busca, por exemplo: selecionei APENAS autor = imasters e disciplina = php, então minha busca deve retornar TODOS os arquivos do autor imasters que sejam da disciplina php, entende?

 

Ai que está o problema... Eu consigo pegar os ID's e fazer o upload/cadastro do arquivo através do código que postei acima que é bem extenso... Mas é basicamente isso para cada campo, porém não consigo pegar este ID para fazer a busca !!! Se eu coloco o botão de busca no form da tabela, tipo como se ele fosse um botão no final da tabela, ele joga pra página do action do form (óbvio), então eu criei outro form abaixo da tabela que é o botão BUSCA... Mas dai ele não consegue "enxergar" os dados do primeiro form...

 

Sendo assim, eu preciso passar estes dados (selecionados no 1° form) para o 2° form, para que eu possa aplicá-lo no meu SQL para realizar a busca !!! Como proceder? :\

Compartilhar este post


Link para o post
Compartilhar em outros sites

no arquivo recebe_upload.php coloca

$OqueFoiSelecionado? = $_REQUEST['id-disciplina]; -> id-disciplina é o name do seu SELECT, ai ele vai trazer as opções selecionadas em um array. basta depois fazer o select no bd com ele. Mas eu faria de outra forma.

De que forma faria?

 

Vou testar mais tarde com o request... mas tipo, o recebe_upload nao tem nada haver com a busca entende? Ele é apenas para inserir o arquivo. Para buscar o arquivo acho que não posso usar o SQL nele, até pq não teria como eu retornar as informações para o header location da página anterior sem falar que ele teria que ter tratativa para saber se o usuário estaria cadastrando ou buscando.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não tem como você pegar dados de outro form sendo q no momento do clique vai para outra página, o que você quer evitar e fazer o usuário repetir o processo do SELECT option, não? coloca dois buttons no seu form com name's diferentes e tira o action do form, vai direcionar com dos dados via post(se estiver method='post' no form) para mesma página, no inicio na página você coloca

if(isset($_REQUEST['name do primeiro button'])){
  header("Location: recebe_upload.php");
}else if(isset($_REQUEST['name do segunda button'])){
   header('Location: arquivoQueVaiBuscarOsDadosDoSelect');
}else{
 echo 'ocorreu um erro no sistema';
}

O que eu fiz, não sei se são boas práticas, mas você não deixa muita escolha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não tem como você pegar dados de outro form sendo q no momento do clique vai para outra página, o que você quer evitar e fazer o usuário repetir o processo do SELECT option, não? coloca dois buttons no seu form com name's diferentes e tira o action do form, vai direcionar com dos dados via post(se estiver method='post' no form) para mesma página, no inicio na página você coloca

if(isset($_REQUEST['name do primeiro button'])){
  header("Location: recebe_upload.php");
}else if(isset($_REQUEST['name do segunda button'])){
   header('Location: arquivoQueVaiBuscarOsDadosDoSelect');
}else{
 echo 'ocorreu um erro no sistema';
}

O que eu fiz, não sei se são boas práticas, mas você não deixa muita escolha.

 

Muito obrigado amigo, acabei utilizando sua dica para outras coisas aqui... O que eu queria fazer era meio sem noção, vou ter que mesclar um pouco mais o sistema, então acabei jogar para outra página os dados e o form que eu queria, resumindo não será mais necessário passar estes dados na mesma página para outro form...

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Bom dia!
       
      A questão é a seguinte, tenho o seguinte form 
       
      <form onsubmit="return false;" action="./busca.php" method="post" name="buscar" id="buscar">
       
                 <input type="text" name="texto">
       
                <button>Executa</button>
       
      </form>
       
      Que está funcionando perfeitamente com a seguinte estrutura do script abaixo
       
        var form = document.getElementById('buscar');
       
        form.addEventListener('submit', function(e)
        {
            e.preventDefault();
       });
       
       
      O que preciso, é saber como submeter esse mesmo formulário ao clicar em button fora do form sem modificar esse script?
       
      <button id="fora_do_form">Submeter o form</button>
       
       
      Agradeço desde já!
       
       
    • Por GOD
      Quero pegar o dado:
      CHEGADA e SAÍDA do form 1 e colocar para ser exibido no campo;
      DATAS DA ESTADIA no form 2.
      e
      ADULTO E CRIANÇA também do form 1 para o form 2
      Como faço isso sem utilizar banco de dado. Se possível somente com html, css. E se não for possível pode entrar o Javascript ou como possível for. 
       
      Desde já agradeço. 
       
       
      Form 1
       
       
      <!DOCTYPE html> <html> <head> <!---------------------------------- FORMULARIO 1 ------------------------------------------------> <form class="reserva-form" action="" method="post"> <fieldset class="fiesdeset"> <div class="reserva-form-chegada"> <label class="reserva-form-chegada-label">Chegada ↴</label> <br /> <input type="date" /> </div> <div class="reserva-form-saida"> <label class="reserva-form-saida-label">Saida ↴</label> <br /> <input type="date" /> </div> <div class="reserva-form-adulto"> <label class="inicio" style="margin: 0">Adultos</label> <select name="ad" id="adultos"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio" style="margin: 0">Crianças</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="reserva-form-pesquisar"> <button type="submit" class="botao-pesquisar type=" submit" id="bt-pesquisa" data-enabled="enabled"> Pesquisar </button> </div> <div class="reserva-form-check-in"> <a href="form-cadastro.html" class="botao-checkin" target="_blank">Pré-checkin</a> </div> </fieldset> </form> </body> </html>  
       
      Form 2
       
       
      <!DOCTYPE html> <html> <head> <!------------------------------ FORMULARIO 2 ---------------------------------------------------> <form class="reserva-form" action="" method="post"> <fieldset class="fiesdeset"> <div class="reserva-form-estadia"> <label class="reserva-form-estadia-label">DATAS DA ESTADIA ↴</label> <br /> <input type="text" name="estadia" value="10/06/2022 - 10/07/2022" /> </div> <div class="reserva-form-quarto"> <label class="reserva-form-quarto-label">   QUARTOS E HÓSPEDES ↴</label> <br> <label class="inicio">  Nº de Quartos</label> <select name="ad" id="quarto"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </div> <div class="reserva-form-adulto"> <label class="inicio">Adultos</label> <select name="ad" id="adultos"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio" style="margin: 0">Crianças</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio">&nbsp Nº de Crianças 0 aos 12 Anos</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> </div> <div class="reserva-form-pesquisar"> <button type="submit" class="botao-pesquisar type=" submit" id="bt-pesquisa" data-enabled="enabled"> Buscar </button> </div> </fieldset> </form> </body> </html>  
    • Por eduardodsilvaq
      Erro retornado no console do navegador: 400 bad request
      Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
      if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
      Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
       
      Código utilizado:
       
      Javascript
      function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
      add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
      <form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form>&nbsp; <h3><div id="status"></div></h3>  
    • Por mamotinho
      Olá, estou com uma dúvida. gostaria de saber como faço para ocultar minhas informações quando alguém for pesquisar pelo meu site, vi que está mostrando meus dados.
       se alguem puder me ajudar fico grato.

×

Informação importante

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