Ir para conteúdo

POWERED BY:

Arquivado

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

Jpkun

Selecionar uma opção em um <select> e carregar dados relaciona

Recommended Posts

Bom eu já pesquisei no Google, e tem varias formas de se resolver esse problema, mas eu sou iniciante tanto em php como em javacript,

por que vir aqui então fazer novamente essa pergunta?

 

Bom todos os métodos usam jquery, ajax e json, bom eu só sei que jquery é um framework de js, ajax e json não faço ideia do que seja até então. Apesar de já ter usado json programando para android nas aulas da faculdade.

 

Bom eu tenho duas tabelas: series e season. Conforme eu selecione uma serie, no select season eu gostaria que aparecesse a quantidade de temporadas correspondente. Meu select de series está assim:

<select name="Titulo" id="CmbSerie">
                            <?php
                                $sql = "SELECT * FROM series";
                                $rs = mysql_query($sql);

                                while ($coluna = mysql_fetch_array($rs)) {
                                                                       
                                                                       
                                    $valor = $coluna[Titulo];
                                    echo "<option value='$valor'> $coluna[Titulo] </option>";
                                                                        
                                }
                                                                
                            ?>
                        </select>

Seguinte eu queria saber se tem como vocês me ajudarem a resolver esse problema sem apenas com js puro e php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

JS puro? É possível, mas deixa e te perguntar, você domina o JS "puro", com certeza não... jQuery para quem é iniciante é muito mais fácil/rápido/simples que o JS "puro", sem falar que em muitos aspectos é mais intuitivo também.

 

Abaixo vou deixar um exemplo do que você quer fazer, usando jQuery e PHP, o json é desnecessário para transacionar os dados.

 

arquivo1.php

<select onchange="carrega(this.value);">
<option value="0">Selecione a opção</option>
<option value="1">Opção 1</option>
<option value="2">Opção 2</option>
<option value="3">Opção 3</option>
<option value="4">Opção 4</option>
</select>
<hr />
<select id="sel2"></select>


<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>


function carrega(id){
    
    var parametros = 'id='+id;
    action = 'arquivo2.php';
    $.ajax({
        type: "POST",
        url: action,
        data: parametros,
        beforeSend: function() {
            $('#sel2').empty().append('<option value="0">Aguarde...</option>');
        },        
        success: function(txt) {  
            $('#sel2').empty().append(txt);
        },
        error: function(txt) {
            $('#sel2').empty().append('<option value="0">Erro!</option>');
        }
    });
}


</script>

arquivo2.php

<?php
$id = $_POST['id'];


for($i=1;$i<=$id;$i++){
    echo '<option value="4">Sub opção '.$i.'</option>';
}
?>

Essa é a lógica da coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso queira um exemplo de Ajax efetuado apenas com JavaScript, ontem mesmo respondi uma duvida:

 

http://forum.imasters.com.br/topic/549713-selecionar-item-e-exibir-resultado-na-tela-sem-carregar-a-pagina/?p=2194709

 

Mas tem algumas 'pegadinhas' mesmo como o Eserra falou....

Ai acabei montando um exemplo abaixo.

 

 

No code abaixo é gerada uma listagem em JSON:

 

listagem.php

<?php

//Normalmente a resposta do banco é um array de arrays associativos.
$linguagens = array(
	array(
		 'id'		=> 1
		,'nome'		=> 'PHP'
	)
	,array(
		 'id'		=> 2
		,'nome'		=> 'JavaScript'
	)
	,array(
		 'id'		=> 3
		,'nome'		=> 'C'
	)
	,array(
		 'id'		=> 4
		,'nome'		=> 'C++'
	)
);

/*
foreach($linguagens as $linguagem){
	echo "<option value='" . $linguagem['id'] . "'>" . $linguagem['nome'] . "</option>";
}
Já que você quer JSON, utilize JSON....
*/

//Assim o header HTTP já vai como UTF-8 e é informado que é um JSON. (JSON é necessariamente coding UTF-8, caso esteja trabalhando com ANSI, nada quem um utf8_encode não resolva...
header('Content-type: application/json; charset=utf-8');

echo json_encode($linguagens);

E agora como consumir apenas com o JavaScript:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	
	
	<select name="linguagem" id="select-id"></select>
	
	<script type="text/javascript">
		ajax = new XMLHttpRequest();
		ajax.open('GET', 'listagem.php', true);
		ajax.send();
		
		ajax.onreadystatechange = function() {
			if(ajax.readyState == 4 && ajax.status == 200) {
				var option;
				var sel = document.getElementById('select-id');
				
				//Transforma um texto simples em um Objeto/JSON  (IE 8+)
                                //A Resposta da requisição HTTP você pega assim: ajax.responseText
				//Porem é necessário converter a mesma 
                                var json = JSON.parse(ajax.responseText);
				
				

				
				
				//Executa um Loop dentro do retorno JSON
				for(x in json){
					 option = document.createElement("option");
					//Para exibir cada interação você pode fazer algo como:
					//console.log(json.x), o x vai aumentando.... e assim passando e cada elemento do JSON
					option.text = json[x].nome;
					option.value = json[x].id;
					sel.add(option);
				}
			}
		}
	
	
	</script>
</body>
</html>

Caso queira entender mais sobre a Linguagem ao invés da Lib (Jquery)

http://tableless.com.br/aprendendo-javascript-online/

https://www.eventials.com/pinceladasdaweb/javascript-boas-praticas-e-otimizacoes/

 

 

A CodeSchool tem uma introdução bacana tambem sobre Jquery e uma otima explicação sobre como manipular o DOM:

https://www.codeschool.com/courses/try-jquery

 

Falando em DOM,

http://tableless.com.br/tenha-o-dom/

 

Bons estudos.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.

      Estou com uma dúvida, referente cálculo de valores em tempo real.

      Tenho uma rotina, que faz o cálculo, o problema é mostrar o resultado.

      Quero mostrar o RESULTADO assim: 0,00  ou  0.00

      Abaixo posto o código.
      jQuery('input').on('keyup',function(){ //Remover ponto e trocar a virgula por ponto var m = document.getElementById("pgRest").value; while (m.indexOf(".") >= 0) { m = m.replace(".", ""); } m = m.replace(",","."); //Remover ponto e trocar a virgula por ponto var j = document.getElementById("pgDsct").value; while (j.indexOf(".") >= 0) { j = j.replace(".", ""); } j = j.replace(",","."); m = parseFloat(jQuery('#pgRest').val() != '' ? jQuery('#pgRest').val() : 0); j = parseFloat(jQuery('#pgDsct').val() != '' ? jQuery('#pgDsct').val() : 0); //Mostra o Resultado em Tempo Real jQuery('#pgTroco').val(m - j); <<=== aqui estou errando })  
       
      Grato,
       
      Cesar
       
       
    • Por violin101
      Caro amigos, saudações.

      Tenho uma tabela escrita em JS que funciona corretamente.
       
      Minha dúvida:
      - como devo fazer para quando a Tabela HTML estiver vazia, exibir o LOGO da Empresa ?

      Abaixo posto o script:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'i' ) return;// Não é Ctrl+A, portanto interrompemos o script evt.preventDefault(); //Chama a Função Calcular Qtde X Valor Venda calcvda(); var idProdutos = document.getElementById("idProdutos").value; var descricao = document.getElementById("descricao").value; var prd_unid = document.getElementById("prd_unid").value; var estoque_atual = document.getElementById("estoque_atual").value; var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotals = document.getElementById("vlrtotal").value; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); if(validarConsumo(estoque_atual)){ //Chama a Modal com Alerta. $("#modal_qtdemaior").modal(); } else { if(qtde == "" || vlrunit == "" || vlrtotal == ""){ //Chama a Modal com Alerta. $("#modal_quantidade").modal(); } else { //Monta a Tabela com os Itens html = "<tr style='font-size:13px;'>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='id_prds[]' value='"+idProdutos+"'>"+idProdutos+"</td>"; html += "<td width='47%' height='10'>"+ "<input type='hidden' name='descricao[]' value='"+descricao+"'>"+descricao+ "<input type='hidden' name='esp[]' value='"+prd_unid+"'> - ESP:"+prd_unid+ "<input type='hidden' name='estoq[]' value='"+estoque_atual+"'></td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>"; html += "<td width='12%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrunit[]' value='"+vlrunit+"'>"+vlrunit+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-uvas btn-remove-produto' style='margin-right:1%; padding:1px 3px; font-size:12px;' title='Remover Item da Lista'>"+ "<span class='fa fa-minus' style='font-size:12px;'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); $("#idProdutos").val(null); $("#descricao").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); $("#idProdutos").focus(); //Se INCLUIR NOVO produto - Limpa a Forma de Pagamento $("#pgSoma").val(null); $("#pgRest").val(null); $("#pgDsct").val(null); $("#pgTroco").val(null); $("#tbpagar tbody").empty(); }//Fim do IF-qtde }//Fim do Validar Consumo });//Fim da Função btn-agregar  
      Grato,

      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Informação importante

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