Ir para conteúdo

POWERED BY:

Arquivado

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

marcosmigueloliveira

Montando uma consulta SQL dinamica com checkbox

Recommended Posts

Ola pessoal estou montando uma query com uns checkbox, consegui adaptar um codigo antigo que tinha e deu certo.

Mas a CONSULT(QUERY) tem uns INNER JOINS, então devo pegar o nome em outra tabela com o codigo salvo na principal. Entenderam?

 

O SELECT esta funcionando normalmente mas quando imprimo sai os codigos e não os nomes alguem pode me ajudar veja o codigo fonte.

<?php
  session_start();
  include_once 'valida.php';
  include_once 'funcao_conexao.php';
  include_once 'variaveisDaSecao.php';

    //RECEBENDO DADOS DO USUARIO PELO GET
    $codPedido   = $_GET['pedido'];
    $acao        = $_GET['acao'];
    $tipo        = $_GET['tipo'];


$campos = array('ml_saram'         => 'Saram',
                'ml_nome'          => 'Nome',
                'ml_nguerra'       => 'N. de Guerra',
                'gr_nome'          => 'Graduação',
                'es_nome'        => 'Especialidade',
                'ml_antiguidade'   => 'Ant. Relativa',
                'ml_ffix'          => 'Tel. Fixo',
                'ml_fcel'          => 'Tel. Celular',
                'ml_fout'          => 'Tel. Outro',
                'ml_ftra'          => 'Tel. Trabalho',
                'ml_email'         => 'E-mail',
                'pf_nome'          => 'Perfil');










//Montando o select com os checkbox
  $campo  = $_POST['fields'];

  if(isset($campo)) {
  $select = "SELECT \"";
  
  for($i = 0; $i < count($campo); $i++) {
    $field = $campo[$i];
    $select .= preg_replace("/[^a-zA-Z_]/", "", $field);
    if($i < count($campo) - 1)
      $select .= ", ";
  }

  $select .= " FROM tb_militar\"";
}

$campos = array('MtCodMaterial'  => 'Tipo',
                'MtCodLoc'       => 'Localização',
                'MtCodProjeto'   => 'Projeto',
                'MtCodEspMnt'    => 'Oficina',
                'MtPn'           => 'Pn',
                'MtSn'           => 'Sn',
                'MtPatrimonio'   => 'Patrimônio',
                'MtNome'         => 'Nomenclatura',
                'MtObs'          => 'Descrição',
                'MtQuantidade'   => 'Estoque');
?>

<html>
  
  <head>
    <title>6º ETA - SINFO </title>
   <?php
        include_once ("arquivoLinkCssJvs.php");
    ?>
    <style type="text/css">
      body {
        padding-top: 30px;
        padding-bottom: 20px;
      }
    </style>
  </head>
  
  <body>
        <?php
      include 'menu.php';
    ?>
    <div class="container">
    <div class="row">
      <div class="zero-clipboard">
        <br>
        <span class="btn-clipboard"><b>Relatorio de Materiais:</b></span>
      </div>
        <div class="panel panel-danger">
          <div class="panel-body">  
            <form class="form-horizontal" action="filtroMaterial.php" method="POST">
            <table>
              <tr>
                <td> 
                  <fieldset>
                    <div class="form-group">
                      <label class="col-md-12 control-label" for="checkboxes">Selecione o Tipo(s):</label>
                </td>
                <td>
                  <?php
                      $i = 1;
                      foreach($campos as $nome => $titulo)                       
                        echo '
                          <div class="checkbox"> 
                            <label class="checkbox"><input name="campos[]" type="checkbox" value="' . $nome . '"/>' . $titulo . '</label>
                          </div>';


                  ?>

                     
                  </td>
                </tr>
                <tr>
                  <td colspan="3">
                    <!-- Button (Double) -->
                    <div class="form-group">
                      <label class="col-md-4 control-label" for="button1id"></label>
                      <div class="col-md-8">
                        <button id="button1id" name="button1id" class="btn btn-success" type="submit" >Enviar</button>
                        <button id="button2id" name="button2id" class="btn btn-default" type="reset" >Limpar</button>
                      </div>
                    </div>
                  </td>
                </tr>
              </table>
            </fieldset>
            </form>


          </div>     
        </div>
    </div>


<?php
//Montando o select com os checkbox
  if(isset($_POST['campos'])) {
      $selecionados = $_POST['campos'];
      //retorna somente os campos que existem na variavel $campos
      $permitidos = array_intersect($selecionados, array_keys($campos));
      //monta a query
      $query      = "SELECT " . implode(', ', $permitidos) . " FROM tb_material AS m \r
      INNER JOIN tb_local_manutencao AS lm  ON m.MtCodLoc =  lm.LmCodigo \r


      ";  //somente para testar o formulario
  }
?>


<div class="table-responsive">
  <table class="table table-hover">  
    <tr>
      <?php
      //IMPRIME O CABEÇALHO DOS ITENS
      foreach ($permitidos as $nome)
          echo "<th class=\"celulatitulo\">". $campos[$nome] . "</th>";
      ?>
    </tr>
    <?php
      //REALIZA A CONSULTA
      $result = mysql_query($query) or die (mysql_error());
      //IMPRIMINDO OS RELATORIOS
      while($valores = mysql_fetch_row($result)) {
          ?>
          <tr>
          <?php
          foreach($valores as $valor)
              echo '<td class="celula\">'.$valor.'</td>';  
          ?>
          </tr>
          <?php
      }
      ?>    
  </table>
</div>


















  <?php
    if ($acao == "excluir" AND $tipo == 1){
      if (mysql_query("CALL PsDevolucaoGeral('$codSaida','$codMaterial','$codPedido','$quantidade','$tipo')") or die (mysql_error())) {
        echo '<script language=javascript>alert( "Pedido Alterado com Sucesso! \n Pedido: '.$codPedido.'."); window.location="devolucaoGeral.php?tipo=1&identificado=1&pedido='.$codPedido.'&saram='.$saramSaida.'"</script>';
      }
    }
    if ($acao == "excluir" AND $tipo == 2){
              echo $codSaida.','.$codMaterial.','.$codPedido.','.$quantidade.','.$tipo;
      if (mysql_query("CALL PsDevolucaoGeral('$codSaida','$codMaterial','$codPedido','$quantidade','$tipo')") or die (mysql_error())) {
        echo '<script language=javascript>alert( "Pedido Excluído com Sucesso! \n Pedido: '.$codPedido.'."); window.location="devolucaoGeral.php?tipo=2&identificado=1&pedido='.$codPedido.'&saram='.$saramSaida.'"</script>';
      }
    }    
  ?>

      <footer>
        <p>©  Esquadrão Guará - Seção de Informática  2015</p>
      </footer>
    </div>
  </div>
    <!-- /container -->
  </body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por FabianoSouza
      Tenho uma function que precisa receber 02 argumentos.
      Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro.
      Veja trecho do meu select.
      ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT.
      O segundo argumento é uma variável (que está devidamente declarada e definida).
       
      O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function).
      Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo.
       
      A function dbo.retornaIco_ItemBloq faz o seguinte:
      1) Recebe o valor do COUNT e da variável @title
      2) Se o COUNT for maior que  Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável
      3) Retorna o HTML que será exibido no resultado da consulta principal
      É super simples.
       
      Há outra forma de chamar a function?
    • 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>  
    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por Sapinn
      Olá a todos existe alguma maneira de trazer todos os dados de uma tabela menos o maior valor?
×

Informação importante

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