Ir para conteúdo

Arquivado

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

PaivaJr

Pegar conteúdo de input dentro de um select

Recommended Posts

Estou querendo no preenchimento de um select, utilizar o conteúdo de um campo text input anterior no sql de preenchimento de um select, mas não consigo pega-lo nem com $_post. ex.:

$sql_secoes = "select * from t_secoes where SEC_COD_LOG = '$codlog' order by sec_cod_log, sec_cod_sec asc";
                            if (!$conexao2=TwoConexao()){return false;}
                            $result_secoes = ibase_query($conexao2,$sql_secoes);
                            while($dados = ibase_fetch_assoc($result_secoes))
                            {
                                $codcl         = $dados["SEC_COD_LOG"];
                                $codcs         = $dados["SEC_COD_SEC"];
                                $nomec        = $dados["SEC_NOME"];
                                echo '<option value="' . $codcs. '">' . $nomec . '</option>';
                            }

No exemplo, o campo $codlog deverá conter o value de um input anterior :

                        <input type="text" name="codlog" size="6" maxlength="6"
                            onBlur="BuscaSelect('Form2','codlog','nomelog')">

Será que alguém poderia me auxiliar, agradeceria muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi você precisa pegar a variavel pelo POST

$codlog = $_POST["codlog"];

​isso depois de ter enviado o formulário para a página para esse arquivo via post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kelvin, tenho que pegar antes de enviar, e aí, nesse caso o POST não dá certo. Ele não aceita porque o operador ainda não clicou no submit

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente deixar deixar mais claro, não entendi bem sua solicitação nem sua consulta de dados

Você quer preencher um input com base na variável $codlog? certo?

caso seja, pra passar algo via post ou Get tem de haver a requisição dos dados, não tenho certeza, mas creio não ser possível passar dados assim sem a requisição da FORM.

agora tipo, para quando alguém selecionar uma opção na select depois mudar, você dever utilizar o AJAX para fazer essas requisições, não entendo muito de Ajax, mas ja vi questões parecidas no aqui, vou buscar uns script que tenho, se eu encontrar eu posto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Icarof, tentando me fazer entender melhor :

No arquivo de dados, o registro tem chave dupla (tipo cliente, duplicata), logo tenho dois combos, sendo que na composição do segundo combo, tenho que selecionar no "sql" apenas os registro que tiverem a primeira chave igual a selecionada no primeiro combo. Ou seja, ao selecionar no primeiro combo, o cliente 000345, devo apresentar no segundo combo apenas os registro cuja primeira chave seja igual a 000345. Ex.: cliente 000345, duplicatas 021, 022, ... 050. Logo as demais duplicatas dos outros clientes não seriam exibidas no combo.

Espero que tenha conseguido explicar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só conseguirá fazer isso com ajax.

Tópico movido: PHP -> JavaScript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, v. poderia me dar um exemplo em Ajax, não conheço ajax.

Mas veja, já consegui com php e javascript, fazer com que ao se digitar num combo que seja transmitido o value para um segundo combo, atualizando o mesmo. Agora o que me falta é conseguir alterar o "sql" da tabela de preenchimento do segundo combo. O sql : "select * from tab where $indvar = codigo order by codigo" é que contem a variável $indvar que deveria ser preenchida com o value do primeiro combo.Com isso o segundo combo abriria apenas com os registro que tivessem a primeira chave = $codvar. Não consigo com $_POST, porque ainda não foi dado o submit. Tem que haver alguma forma de passar essa variável do primeiro combo para o sql do segundo combo, entende ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PaivaJr,

Em uma explicação rápida e simplista:

quando o usuário abre uma página o navegador envia uma requisição para o servidor que manda de volta todo código Javascript, html e css. quando você precisar ir no servidor novamente (PHP, Banco) só é possível com uma nova requisição. como no seu caso, você precisa atualizar um campo (ir no servidor) antes mesmo do usuário dar SUBMIT e por tanto não quer recarregar a página, você precisa enviar uma requisição por debaixo dos panos. o usuário não vai ver a requisição, o navegador envia o dado e recebe a informação sem recarregar a página. Pra isso existe o AJAX, ele envia requisição sem precisar recarregar a página.

Pesquise a respeito, tente montar sua requisição assíncrona e poste suas dificuldades, vamos tentando ajudar.

http://www.w3schools.com/ajax/default.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

kelvin, amigo essa internet é "dose pra mamute". No meu tempo de progamador, v. fazia todo um sistema com uma só linguagem, fosse pascal, cobol, dbase, basic, etc., mas hoje em dia v. tem que ter conhecimento de html, php (afinal o html não acessa banco de dados), javascript (porque o php não tem controle total sobre o os comandos), e agora ajax (porque nenhuma das anteriores me permite acesso à dados do input antes do submite). Haja "saco" !!!

Bom, vou ler mais sobre o ajax, mas se o amigo me puder adiantar (orientar) já a minha primeira dúvida em ajax agradeceria muito.

Vejamos : acho que tenho que utilizar a função ajax "XMLHttpRequest" para obter a minha variável gerada no primeiro combo para executa-la no "sql" do segundo combo, certo ? Agora aí vai a pergunta: Devo pegar/setar a variável utilizando a função no "onclick ou obblur" do primeiro combo ou no "onfocus" do segundo combo ?

Se puder me adiantar essa dúvida penso que se tornará mais fácil para mim.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por parte.

  • A primeira coisa a ser feita é escolher o evento que vai chamar seu ajax, Veja sobre eventos em JS http://www.w3schools.com/js/js_events.asp (para seu caso acho que o onChange é o mais apropriado)
  • depois coloque no evento escolhido a chamada de uma função que você vai criar para fazer a requisição e atualizar o segundo campo.
  • na função chamado no item anterior você vai capturar o valor do primeiro campo e enviar para um arquivo .php com - XMLHttpRequest - (Veja link do AJAX)
  • o arquivo .php deve receber o valor ($_POST), fazer o select no banco e retornar os valores do segundo campo.
  • de volta a sua função JS, você pega os valores recebidos (no link do ajax mostra como pegar a resposta do servidor) e atualiza o segundo campo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kelvin, vejamos :

O evento deve ser então o "onblur" do segundo campo, pois já existe o uso do "onchange" no combo para uma função minha em javascript que atribui o codigo selecionado à um outro campo input.

Não entendi : "na função chamado no item anterior você vai capturar o valor do primeiro campo e enviar para um arquivo .php com - XMLHttpRequest - (Veja link do AJAX)".

Então não posso receber e atribuir o valor da variável selecionada no primeiro combo para o segundo combo nessa mesma página .php ? Tenho que criar uma outra página ?

Agora fiquei na dúvida.

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.