Ir para conteúdo

POWERED BY:

Arquivado

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

SeveroSoft

Mostrar checkbox de acordo com opção do select

Recommended Posts

Fala mentes brilhantes, como vocês estão? bem?

 

Bom, hoje precisava de uma ajudinha de vocês, espero que consigam me dar uma força :love:.

 

 

Sistema:

Estou desenvolvendo um sistema de atendimento em mesas de um restaurante.

Para isso adicionei 1 select options que chama a tabela CATEGORIAS (SEGUE A IMAGEM)

image.thumb.png.36b31379035d88b60ad74c2be20b480b.png

Ao selecionar a categoria (Por exemplo "Pizzas") Carrega as opções no outro Select Options abaixo que se chama produtos.
image.thumb.png.d545c0e286d82802c0e82ac6120facfe.png

 

Até ai tudo bem... Oque preciso agora é fazer com que ao SELECIONAR A OPÇÃO PIZZA mostre apenas os CHECKBOX que estão relacionados ao produto (Tem na tabela um campo chamado id_modificadores, que if o id_prod (Na tabela modificadores) == id_modificadores (Na tabela produtos) {image.thumb.png.09a1b484cadc256eadfaa9ba77fdb745.png

}

CÓDIGO QUE INFORMA OS MODIFICADORES.


  <?php while($reg3 = $query3->fetch_array()) { ?>
  <?php 
  $nome_mod = $reg3["nome_mod"];
  $nome_opt_mod = $reg3["nome_opcao_mod"];
  $preco_mod = $reg3["preco_mod"];
  $arrays = explode(',', $nome_opt_mod);
  $arrays_preco = explode(',', $preco_mod);
  echo "<br> 
  <div class='col-sm-6'>
  <div class='card'>
  <h5 class='card-header'>$nome_mod</h5>
  <div class='card-body' name='id_modificadores' id='id_modificadores'>
  ";
  
  foreach($arrays as $valores)
 {
  echo "<div class='form-check'>
  <span type='hidden' class='switch switch-sm'><input type='checkbox' name='modificador[]' class='form-check-input' id='$valores' value='$valores'>
    <label for='$valores'><h5 class='card-title'>$valores</h5></label><br></div>";
 }
      echo "
  </div>
  </div><br>
</div>";
  }
  ?>

Aparentemente não entendo nada de AJAX, e o sistema que usei nos select options foi do CELKE, mas não funciona para checkbox. Lembrando que estes checkbox passam por um EXPLODE para se separarem pois eles vão para o banco de dados por ','.

 

Desde-já agradeço a todos e tenham uma ótima semana. 

Aguardo ansiosamente por esse HELP. 

 

Atenciosamente Lucas Severo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue um exemplo que funciona com Estado e Cidade... basta você ajustar para o que precisa:

https://www.devmedia.com.br/populando-selects-dinamicamente-com-ajax-json-e-php/27658

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 horas atrás, Uerlen Santos disse:

Segue um exemplo que funciona com Estado e Cidade... basta você ajustar para o que precisa:

https://www.devmedia.com.br/populando-selects-dinamicamente-com-ajax-json-e-php/27658

 

Abraço

 

Então amigo, agradeço a referencia... Mas como informei não entendo nada de Ajax/json. e essa questão de aparecer options eu queria q aparecesse imputs. Desde-ja agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

@SeveroSoft Como olhei você está povoando as opções conforme os dados vindos do banco. A lógica é indiferente, basta que capturamos o valor do elemento selecionado e enviamos para uma função repassar via AJAX para outro arquivo.

Veja um exemplo genérico, tenho o select e tenho as opções

Spoiler

<select id="selecionar">
    <option value="option_a">Produto A</option>
    <option value="option_b">Produto B</option>
</select>
<script>
    // Capturamos o elemento ID do selset
    var opt = document.getElementById('selecionar');
    // Adicionamos o evento quando o elemento que capturamos é alterado.
    opt.addEventListener('change', myFunction);

    function myFunction() {
        // Pegamos o value do elemento capturado
        var valor = opt.value;
        /*
         * Aqui criamos a função ajax
         * Quando você for executar o open pelo request
         * poder usar o GET e passar seu arquivo.php informando o por parâmetro
         * qual o value foi solicitado
         * assim sendo seu arquivo.php irá ser carregado conforme o valor
         * selecionado
         */

        // Lógico que essa linha não funciona é apenas para mostrar
        // como você pode eviar os dados
        httpRequest.open('GET', 'arquivo.php?parametro=' + valor, true);
    }
</script>

 

 

Então no arquivo que irá receber basta que eu consulte o valor e exibo os inputs do tipo checkbox conforme o valor recebido

Spoiler

<?php
if (isset($_GET['parametro'])) { // Verifico se há parâmetros para trabalhar
  if ($_GET['parametro'] == 'option_a') {
    // De acordo com o meu exemplo aqui eu colocaria todos checkbox para a primeira opção do select
  } else if ($_GET['parametro'] == 'option_b') {
    // De acordo com o meu exemplo aqui eu colocaria todos checkbox para a segunda opção do select
  } else {
    // Nenhuma das opções é valida para exibir conteúdo
  }
}

 

 

Executar AJAX é muito simples veja isso:

https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHttpRequest/Usando_XMLHttpRequest

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Eu preciso exibir duas informações em minha consulta:
      1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
      2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
       
      Até aqui sem problemas.
       
      O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
       
      Há uma forma de utilizar UMA contagem para atender as duas necessidades?
       
      Meu código está assim:
       
      ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'  
    • Por marsolim
      Olá a todos. Venho com um probleminha para o qual não encontrei resposta. Talvez, eu não tenha sabido os termos certos para pesquisar. É o seguinte... estou tentando incluir, em uma lista array, índices com valores montados em uma variável a partir de outra array e não estou a conseguir. Atualmente, meu código é o seguinte...
      var ids = {     "joby": "track 01",     "dobby": "track 02",     "medz": "track 03",     "decks": "track 04,     "tecks": "track 05",     "assud": "track 06",     "mand": "track 07",     "daly": "track 08", }; var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      Até aqui ok. É o que tenho no momento. O que estou querendo fazer é colocar, no lugar das linhas de adb: 0 até dep: 0, outra array que criei com esses índices, porque pode ser que eu precise adicionar mais valores e eu quero fazer isso na array nova porque vou usar ela em vários lugares e eu teria que alterar em todos se não fizer essa modificação. Fazendo ela, eu alteraria apenas nela mesmo. Então, agora, com a array nova, seria algo assim:
      var ids = {     "joby": "track 01",     "dobby": "track 01",     "medz": "track 01",     "decks": "track 01",     "tecks": "track 01",     "assud": "track 01",     "mand": "track 01",     "daly": "track 01", }; var juds = ["adb", "mdc", "bah", "tek", "dep"]; //lista nova com os valores var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      O que eu preciso é incluir os valores de juds em lstIds. Da forma que está, não consigo fazer um for dentro do outro for para pegar esses dados e não consigo, também, criar ele fora e inserir com variável, tipo:
      var fJuds = ""; for(i in juds){     fJuds += juds[i] + ": 0,"; } for(i in ids){         lstIds[i] =  {         dock: ids[i],         fJuds // Aqui eu incluiria a variável no lugar das linhas...         tos: 0     }; }  
      Bem, o que eu queria saber mesmo é como eu poderia inserir uma variável no meio duma lista desse tipo... se é possível.
       
      Agradeço pela atenção...
    • Por FabianoSouza
      Possuo uma coluna de data.
      Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros.
      Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente.
      Algo como 
       
      João  | 16/11/2023
      Maria | 17/11/2023
      José  |  20/11/2023
       
      -----------------------------
      (demais registros da base)
      Antônio   |  20/05/2023
      Rosa        | 15/08/2023
      Cida         | 15/10/2022
      Pedro      |  20/05/2021
      Paulo      |  14/11/2020
       
      O select seria esse.
      select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial  
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por helkton
      iai galera, tenho uma pendenga e não consigo achar nada pra suprir minha dúvida rsss
      seguinte....
       
      Tenho um cardápio Online onde tenho os devidos ITENS sendo abertos em uma janela modal e nesta janela tenho os devidos ITENS EXTRAS em um checkbox que o usuario clicam e adicionam
      esta é minha lista de ADICIONAIS EXTRAS QUE PEGO DO BANCO DE DADOS 
       
      <label style="border:0px red solid;font-size:1em;width:90%;text-align:left;padding:0px;margin-left:2em;" onclick="somar()"> <input style="height:23px;width:23px;cursor:pointer" type="checkbox" class='limited<?php echo $resultExtrasDelivery->idExtraDelivery?>' id="valorItemExtra" name="idExtraSelects[]" value="<?php echo $resultItensExtras->valorItemExtra?>" > <span style="cursor:pointer"><?php echo $resultItensExtras->nomeItemExtra?> <span style="font-size:0.7em;color:#DD2C00"> <small> <?php if($resultItensExtras->valorItemExtra == '0.00'){echo'';}else{echo '+R$ '.$resultItensExtras->valorItemExtra.'<input type="text" value="'.$resultItensExtras->valorItemExtra.'">';}?></small> </span> </span> </label> ela vem tipo assim
      AcréscimoTradicional - Escolha até 3 opções
      BACON 1,00
      CALABRESA 1,00
      MUSSARELA 1,00
      PRESUNTO 1,00
      OVO 1,00
       
      o que quero fazer é somente somar os itens clicados pelo usuario e somar com o TOTAL DO ITEM 
      tipo pegar o total do item tipo R$30,00 e ir somando com os acrescimos escolhidos
       
      <script> function somar() { // var valorItem = document.getElementById('valorItemExtra').value; var checkbox = document.getElementById('#valorItemExtra'); var total = 0; if(checkbox.checked == true){ total += checkbox.value; } document.getElementById('somar').innerHTML = total; } </script>  
×

Informação importante

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