Ir para conteúdo
Fórum Script Brasil
  • 0

Fazer 2 Buscas


AWD

Pergunta

Olá!

Eu estou fazendo uma pagina de busca onde é necessário que a palavra pesquisada seja buscada em mais de uma tabela.

Ai eu fiz assim:

<?php

switch($acao)

{

default:

$block = date('Y-m-d');

$block2 = date('H:i:s');

$datara = date('Y-m-d');

$dt = date('Y-m-d', time()-24*3600*4);

include "banco.php";

$conexao = mysql_connect("$bd_servidor", "$bd_usuario", "$bd_senha") or die ("Could not connect: " . mysql_error());

$db = mysql_select_db($bd_banco, $conexao) or die ("Erro banco de dados não existe");

$busca = "SELECT titulo FROM bnoticias where titulo LIKE '%%$busca%%'";

Ai tem o resto do código para exibir os resultados

Ai no final da página coloquei esse códigp novamente:

<?php

switch($acao)

{

default:

$block = date('Y-m-d');

$block2 = date('H:i:s');

$datara = date('Y-m-d');

$dt = date('Y-m-d', time()-24*3600*4);

include "banco.php";

$conexao = mysql_connect("$bd_servidor", "$bd_usuario", "$bd_senha") or die ("Could not connect: " . mysql_error());

$db = mysql_select_db($bd_banco, $conexao) or die ("Erro banco de dados não existe");

$busca = "SELECT titulo FROM noticias_brasil where titulo LIKE '%%$busca%%'";

Ai tem o resto do código para exibir os resultados.

Mas quando definio o where no segundo código da erro no comando, só funciona se eu não definir o where mas ai irá exibir todos os resultados e não só os da palavra pesquisada.

Se alguém souber como eu faço para procurar essa palavra nas duas tabelas que coloquei sem dar erro no comando ajudaria muito.

Ou se souber outro método de procurar em duas tabelas também vai me ajudar muito.

Valeusão!

Editado por AWD
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
<?php

:

:

$db = mysql_select_db($bd_banco, $conexao) or die ("Erro banco de dados não existe");

$busca = "SELECT titulo FROM bnoticias where titulo LIKE '%%$busca%%'";

Ai tem o resto do código para exibir os resultados

Ai no final da página coloquei esse código novamente:

AWD, não estaria justamente aqui o problema com a segunda consulta?

Se você na primeira consulta, atribui à variável $busca a instrução SELECT baseada no valor inicial de $busca (vindo do formulário), parece-me que este novo valor (comando SQL) é que será "introduzido" na sua segunda consulta.

Supondo que eu esteja correto, haveriam duas possibilidades:

1) definir uma variável para cada consulta, ao invés de "reaproveitar" a variável $busca. Algo como:

$sqlBusca1 = "SELECT titulo FROM noticias_brasil where titulo LIKE '%%$busca%%'"; (na primeira parte)

$sqlBusca2 = "SELECT titulo FROM noticias_brasil where titulo LIKE '%%$busca%%'"; (na segunda parte)

2) como o campo envolvido (titulo) é o mesmo em ambas as tabelas, tenho quase certeza que você poderia fazer a consulta utilizando um UNION (você precisaria testar). Neste caso, você teria apenas a primeira parte do seu código e a instrução SQL ficaria:

$sqlBusca1 = "SELECT titulo FROM noticias_brasil where titulo LIKE '%%$busca%%' " .

"UNION ALL " .

"SELECT titulo FROM noticias_brasil where titulo LIKE '%%$busca%%'";

Não sei se coloquei direito a questão da concatenação de strings (php eu mexo só pouco) - o relevante é a idéia da coisa.

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos lá...

Acredito que em php se possa processar várias queries em, digamos, "off" certo?

Então, baseado na execução de um Processor da Zeos Lib, posso executar estas queries em sequências

separadas pelo ";"... creio que o mesmo se daria no PHP...

Então, a idéia é ter uma tabela temporária para armazenar os dados que se deseja consultar.

No exemplo a seguir, cria-se uma tabela temporária e, sequencialmente, é feita a inserção dos

títulos dos artigos que contém a palavra "prefeito" nos jornais da cidade (tabela: 'jfnoticias'

com titulos e notícias dos jornais que circulam no município, 'mgnoticias' com titulos e

noticias dos jornais do estado e 'brnoticias' com os artigos de jornais do país)...

create table `acme`.`temp`
(
idtemp integer unsigned not null auto_increment,
titulo varchar(200),
jornal varchar(20),
primary key (`idtemp`)
)
engine = InnoDB;

insert into `acme`.`temp`
(idtemp, titulo, jornal)
select 0, titulo, jornal from `acme`.`jfnoticias`
where titulo like "%prefeito%";

insert into `acme`.`temp`
(idtemp, titulo, jornal)
select 0, titulo, jornal from `acme`.`mgnoticias`
where titulo like "%prefeito%";

insert into `acme`.`temp`
(idtemp, titulo, jornal)
select 0, titulo, jornal from `acme`.`brnoticias`
where titulo like "%prefeito%";
Aqui vai a sua busca em php (isto é, apenas seleção, já que a "busca" foi feita nas queries anteriores):
$busca = "select jornal, titulo from `acme`.`temp`";

Ok?

Espero ter ajudado!

(se der certo, não esquece de marcar como "Resolvido") ok?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...