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
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por daemon
      Tenho 3 selects assim com varias categorias...
       
              $sql = "SELECT * FROM topicos          WHERE idcategoria = $idcategoria          AND pubdate BETWEEN NOW() - INTERVAL $intervalo1_horas_ou_minutos $tipo_intervalo1_horas_mnutos AND          NOW() - $intervalo2_horas_ou_minutos ORDER BY pubdate DESC LIMIT 1"; Preciso que na minha pagina principal (index) mostre este registro por 10minutos.. passando de 10 minutos mostra o resultado do proximo select (categoria)..
    • 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>  
×

Informação importante

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