Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Consultas com Checkbox, Dinâmicas com INNER JOINS

$
0
0

Ola pessoal estou efetuando uma consulta dinâmica no banco utilizando checkbox.

Pesquisei alguns códigos aqui no forum e em outros locais e consegui fazer a consulta.

MAs então estou com um problema, como a minha tabela possui chaves estrangeiras em determinados campos o retorno vai ser o código e não o nome que esta na outra tabela.

 

Estou enviando o codigo quem puder me ajudar muito obrigado!

          $tipoMaterial = $_POST['tipoMaterial'];
    $criterio = " WHERE ";
  for($i = 0; $i < count($tipoMaterial); $i++) {

    switch ($tipoMaterial[$i]) {
      case '2':
       $criterio .= "m.MtCodMaterial = ".$tipoMaterial[$i]." OR ";
      break;
      case '1':
       $criterio .= "m.MtCodMaterial = ".$tipoMaterial[$i]." OR ";
      break;   
      case '3':
       $criterio .= "m.MtCodMaterial = ".$tipoMaterial[$i]." OR ";
      break; 
      case 'all':
       $criterio = "";
      break;
    }
  }
      $criterio = substr($criterio, 0, -3);
    
      $campos = array(
        'MtCodigo'        => 'Código',
        'MtCodLoc'        => 'Local de Estoque',
        'MtCodProjeto'    => 'Projeto',
        'MtCodEspMnt'     => 'Especilidade',
        'MtPn'            => 'PN',
        'MtSn'            => 'SN',
        'MtPatrimonio'    => 'Patrimônio',
        'MtNome'          => 'Nome',
        'MtObs'           => 'Obs.',
        'MtQuantidade'    => 'Qtd. Estoque',
        'MtCodMaterial'   => 'Tipo de Material');


  if(isset($_POST['campos'])) {


      $selecionados = $_POST['campos'];

      //retorna somente os campos que existem na variavel $campos
      $permitidos = array_intersect($selecionados, array_keys($campos));



      $query      = "SELECT " . implode(', ', $permitidos) . " FROM tb_material as m \r
                     INNER JOIN tb_localizacao l    ON  m.MtCodLoc = l.LcCodigo \r
                     INNER JOIN tb_projeto p        ON  m.MtCodProjeto  = p.PrCodigo \r
                     INNER JOIN tb_tipoMaterial t   ON  m.MtCodMaterial  = t.TmCodigo \r
                     INNER JOIN tb_espec_mnt e      ON  m.MtCodEspMnt  = e.EmCodigo  $criterio";
      //somente para testar o formulario



echo "<br><br><br><br>";
//echo $query;

}
?>

  <table>
      
    <tr>
      <?php
    //echo $query;
      //imprime o cabeçalho
      foreach ($permitidos as $nome)
          echo "<th>". $campos[$nome] . "</th>";
      ?>
      </tr>
      <?php
      //realiza a consulta
      $result = mysql_query($query) or die (mysql_error());
      //imprime os resultados
      print_r($result);
      while($valores = mysql_fetch_row($result)) {
          ?>
          <tr>
          <?php

          foreach($valores as $valor)
            print_r($valores);
              echo "<td class=\"celula\">".$valor."</td>";  
          ?>
          </tr>
          <?php
      }
      ?>

Os campos que são chave estrangeira estão nos INNER JOINS.

Sei que devo puxar o nome deles na outra tabela mas não estou sabendo fazer isso.

 

Alguem tem como me ajudar!

 


Viewing all articles
Browse latest Browse all 14190