Consultas com Checkbox, Dinâmicas com INNER JOINS
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!
Discussão (6)
Carregando comentários...