Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos
Estou com um problema que não estou a conseguir resolver.
Quero fazer uma pesquisa por palavra em varias tabelas de uma BD ao mesmo tempo, com apresentação dos resultados logo a seguir, e só estou a conseguir fazer em uma tabela, neste caso a "ultimos".
Como posso, com o codigo que posto a seguir, fazer a pesquisa em varias tabelas?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sistema de busca interna com PHP/MySQL</title>
</head>
<body>
<form name="frmBusca" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar" >
<input type="text" name="palavra" />
<input type="submit" value="Buscar" />
</form>
<?php
// Conexão com o banco de dados
$conn = @mysql_connect("localhost", "xxxxxxxx", "xxxxxxxxx") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mysql_select_db("xxxxxxxx", $conn) or die("Não foi possível selecionar o Banco");
// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];
// Verificamos se a ação é de busca
if ($a == "buscar") {
// Pegamos a palavra
$palavra = trim($_POST['palavra']);
// Verificamos no banco de dados produtos equivalente a palavra digitada
$sql = mysql_query("SELECT * FROM ultimos WHERE alt LIKE '%".$palavra."%' ORDER BY data DESC");
// Descobrimos o total de registros encontrados
$numRegistros = mysql_num_rows($sql);
// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe os conteudos
?>
<table width="660" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2"><span class="textoBrancoTitulos">P</span><span class="textoRosaTitulos">esquisa</span></td>
</tr>
<tr>
<td colspan="2" height="15"></td>
</tr>
<tr>
<td width="129"> </td>
<td width="531" class="noticiasTitulo"><div id="noticias"><?php while ($produto = mysql_fetch_object($sql)) { echo '<div><p><strong><span class="noticiasTitulo">' . $produto->titulo . '</span></strong><br /><span class="noticiasTexto">' .$produto->subtitulo. '</span><br /><span class="noticiasData">' .$produto->data. '</span><img src="../images/upload/ultimos/'.$produto->foto.'" width="120" height="88" /><br />
<span class="noticiasTexto">----------------------------------------------------------------------------------------------------------------------------------</span><br>
</p></div>';?>
<?php }
// Se não houver registros
} else {
echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
}
}
?>
</div>
</td>
</tr>
</table>
Alguem me pode ajudar
Obrigado
S-Bay
>
Estou com um problema que não estou a conseguir resolver.
Quero fazer uma pesquisa por palavra em varias tabelas de uma BD ao mesmo tempo, com apresentação dos resultados logo a seguir, e só estou a conseguir fazer em uma tabela, neste caso a "ultimos".
Como posso, com o codigo que posto a seguir, fazer a pesquisa em varias tabelas?
Como você não passou o formato das suas tabelas vou mostrar o conceito, ai você terá que adaptar:
Criando 3 tabelas, primeiros, ultimos e outros
Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.01 sec)Agora inserindo alguns dados:
mysql> insert into
primeiros(palavra) values('Teste'),('Testando'),('Joao'),('Neto');Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> insert into
ultimos(palavra) values('Teste'),('Joao'),('Neto');Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into
outros(palavra) values('Joao'),('Neto');Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
Certo, vamos fazer uma busca pela palavra Testando, que só aparece na tabela primeiros
+-----------+---------+--------+ | primeiros | ultimos | outros | +-----------+---------+--------+ | Testando | NULL | NULL | +-----------+---------+--------+ 1 row in set (0.00 sec)Como pode ver, ultimos e outros ficaram como NULL, apenas primeiros trouxe um resultado. Agora vamos ver a busca pela palavra Neto, que tem em todas as tabelas:
+-----------+---------+--------+ | primeiros | ultimos | outros | +-----------+---------+--------+ | Neto | Neto | Neto | +-----------+---------+--------+ 1 row in set (0.00 sec)As 3 colunas trouxeram o resultado, agora é só adaptar para o que você precisa...