Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, tudo certo?
Preciso realizar uma busca em duas tabelas SQL diferentes, em que não há relação entre elas, e exibir o resultado em uma única tabela no HTML usando PHP.
Vou entrar em detalhes para melhor entendimento.
Possuo as tabelas leiame1 e leiame2, em que ambas possuem os mesmos atributos: 'numero', 'titulo', 'descricao', 'caminho' e 'id_ano'. Foram criadas duas tabelas leiames, pois cada uma é destinada a um público específico.
Pois bem, o atributo 'id_ano' em ambas tabelas é uma chave estrangeira, referenciando o atributo 'id' nas tabelas ano1 e ano2. Nessas tabelas, os atributos são: 'ano', 'caminho'. Quando um ano é registrado, é criada uma pasta especifíca, a fim de armazenar os leiames do ano criado, sendo seu endereço registrado no atributo 'caminho'.
Como funciona?
Eu vou criar o ano 2014, para armazenar os leiames para o público 1. Neste caso, na tabela ano1
id: 1
ano: 2014
caminho: leiame1/2014/
E ai vou publicar um leiame do ano 2014 para o público 1.
Na tabela leiame1:
id: 1
numero: 01
titulo: Como instalar o Google Chrome
descricao: bla bla bla bla
caminho: chrome.pdf
id_ano: 1
A mesma coisa vale para o registro de leiame2, porém o caminho do ano é diferente.. leiame2/ano ...
Gostaria de realizar uma busca unificada, em que o nome digitado pelo usuário é buscado nas tabelas leiame1 e leiame2, e o resultado exibido de forma única em uma tabela HTML. Tentei usar o UNION mas não funcionou.
$consulta = mysql_query("(SELECT C.numero, C.titulo, C.descricao, C.caminho, C.id_ano FROM leiame1 AS C INNER JOIN ano1 AS A ON C.id_ano = A.id WHERE (C.titulo LIKE '%$txt_digitado%' OR C.numero LIKE '%$txt_digitado%')) UNION (SELECT L.numero, L.titulo, L.descricao, L.caminho, L.id_ano FROM leiame2 AS L INNER JOIN ano2 AS Y ON L.id_ano = Y.id WHERE (L.titulo LIKE '%$txt_digitado%' OR L.numero LIKE '%$txt_digitado%'))");
Código HTML:
<table width="650">
<thead>
<tr>
<th>Número</th>
<th>Assunto</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<?php
do {
?>
<tr>
<td>
<?php
$varAno = $campo['ano'];
$consultaCam = mysql_query("SELECT * FROM ano1 AS A, ano2 AS Y WHERE A.id = $varAno OR Y.id = $varAno");
$campoCam = mysql_fetch_array($consultaCam);
if($campo['caminho']) {
$processaTxt = explode("/", $campoCam['caminho']);
$txt1 = $processaTxt[3];
$txt2 = $campo['caminho']; ?>
<a target="_blank" href="<?php echo "../" . "$txt1/$txt2"; ?>"><?php echo $campo['numero'] . "/" . $campoCam['ano']; ?></a>
<?php } else {
echo $campo['numero'] . "/" . $campoCam['ano'];
} ?>
</td>
<td><p><strong><?php echo $campo['titulo']; ?></strong></p>
<p><?php echo $campo['descricao']); ?></p>
</td>
</tr>
<?php } while($campo = mysql_fetch_array($consulta)); ?>
</tbody>
</table>
Porém a busca não está correta, pois as referências não estão abrindo os leiames registrados no servidor e com o caminho registrado no banco de dados. E não mostra todos os dados..
A principal dúvida é como fazer uma busca inteligente com duas tabelas que não possuem relação uma com a outra?
Desde já, obrigado! Marcel
Carregando comentários...