Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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.
>
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
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
}>
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? :\
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.
>
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.
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.
>
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'); 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...
há diversas formas de se trabalhar com dados de formulários, qual a correta? Bom, creio que seja a que atender o problema e for melhor para entender...boa sorte ai mano
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?