Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

P3rukao

Busca Interna em todo o site

Recommended Posts

Povu meu...

 

Já Rodei pelo fórum todo (principalmente o de Modelagem/SQL) atrás de uma solução para o meu problema mas não consegui nada até agora...

 

Seguinte: Eu tenho, em meu site, uma área para efetuar busca no sistema;

Esse sistema, vai procurar por uma palavra chave que eu informei no Form, e essa consulta deve ser feita em 4 tabelas (Noticias, Empreendimentos, Televisao, e Radio);

Essas tabelas não possuem qualquer vínculo uma com as outras, portanto, acho que não cabe aqui usar joins ou qqr outro tipo de uniao de dados.

 

O que eu preciso eh buscar os dados e retorna-los, CASO for achado em uma dessas tabelas.

 

OBS1: se achar em mais de uma, tem que exibi-los também,..., de preferência, exibindo na lista de resultados, em quanl tabela foi achado aquele resultado!!!

 

OBS2: Em todos os posts que eu pesquisei, ensinam a fazer pesquisando em uma tabela única, q no meu caso não é possivel. No meu caso, eu tenho várias tabelas e elas são todas independentes;

 

 

 

» Alguém pode dar uma força???

 

 

Att...

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS2: Em todos os posts que eu pesquisei, ensinam a fazer pesquisando em uma tabela única, q no meu caso não é possivel. No meu caso, eu tenho várias tabelas e elas são todas independentes;

Porque você não pode fazer 4 consultas diferentes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... eu tenho soh um campo para informar o que eu quero procurar...

Para solucionar esse meu problema, facim-facim, era soh eu colocar uns RADIOBUTONS, com a opção pro cara escolher onde quer procurar!!!

 

Mas eu nem posso mais mecher no layout do site (num tem mais espaço pra por isso), e também não fica muito "confortável" para o usuario.

 

Eu não estou conseguindo imaginar como fazer essas 4 consultas de uma soh vez.... :huh:

 

» Podes me dar uma luz????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que não pode usar esta lógica?

 

Olhe:

 

$sql1="SELECT * FROM tabela1 WHERE campo=$variavel_recebida_form";
$resultado1= mysql_num_rows($sql1);

if ($resultado1>0)
{

  comando que desejar....


}

$sql2="SELECT * FROM tabela2 WHERE campo=$variavel_recebida_form";
$resultado2= mysql_num_rows($sql2);


if ($resultado2>0)
{

  comando que desejar....


}


$sql3="SELECT * FROM tabela3 WHERE campo=$variavel_recebida_form";
$resultado3=mysql_num_rows($sql3);


if ($resultado3>0)
{

  comando que desejar....


}

 

E assim vai... O melhor mesmo é Usar Inner Join, mas como suas tabelas não tem nenhum relacionamento....

Editado para corigir um erro no código

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ultimo teste que eu fiz aqui, usei isto aqui:

 

» 1º: Estou fazendo esta consulta:

$comandProc = "SELECT noticias.titulo as 'ntitulo' FROM noticias WHERE noticias.titulo LIKE '%".$stringBusca."%' AND noticias.excluido = 0";

Essa variável $stringBusca, é a que recebe o valor passado por POST do meu form de busca.

Em minha tabela NOTICIAS eu tenho 4 itens que atendem a condição excluido=0;

 

Problema: Só estou visualizando 3 dos 4 itens da consulta; =/

 

» 2º: Na segunda tentativa:

$comandProc = "SELECT noticias.titulo as 'ntitulo', televisao.nome as 'tnome' FROM noticias, televisao WHERE noticias.titulo LIKE '%".$stringBusca."%' OR televisao.nome LIKE '%".$stringBusca."%' AND noticias.excluido = 0 AND televisao.excluido = 0";

Tentei mesclar duas tabelas onde meu sistema deve procurar por valores;

Digitei um determinado valor para a busca, e... em minha tabela notícia APENAS 1 item atende a minha consulta, porém ele está me retornando 5 valores, que são a mesma quantidade de itens q a tabela TELEVISAO contém;

Quando executei essa mesma consulta no phpMyAdmin, ele me retornou todos os itens da TELEVISAO (5 itens), cada um desses, acompanhado do unico valor da tabela NOTICIA;

 

Eu já fiz um outro projeto em SQL SERVER, e para fazer uma busca no sistema, eu criei uma função para poder fazer a busca e retornar os dados..

Já procurei no google, no forum, mas não achei nada falando sobre isso, intaum:

» Tem como criar função no mySql, para poder retornar dados de consuta???

 

 

 

Como já disse, e dei alguns exemplos, esse meu sistema contém várias tabelas...

Até agora, eu identifiquei 4 tabelas onde preciso fazer essa consulta... cada tabela tem pelo menos 3 campos a pesquizar(titulo, data, e texto, por exemplo)...

Há uma condição também, para q apenas as tabelas com o campo excluido = 0, sejam incluidas nessa busca...

 

 

Espero ter deixado claro a minha duvida!!!

 

------------------------------------

 

Novato, atua dica parece ser boa, vou testar aqui e depois aviso o que deu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novato, lah na cláusula WHERE, qual a diferença de usar o '=' e usar o 'LIKE'??? Ou tanto faz???

 

 

E você pôs $mysql_num_rows, no exemplo.... isso num existe naum neah?? num seria sem o $???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O = procura exatamente o termo..

o LIKE procura os semelhantes tb..

 

resumidamente é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu usei o modelo que você me mostrou Novato, e ele está 99% perfeito para o que eu havia mensionado. Inclusive, eu posso mostrar de qual tabela eu estou tendo o retorno da busca, que era uma das minhas necessidades nesse modelo de busca!!!

 

Só não está funcionando uma coisa nesse seguinte comando:

$sqlNoticia = mysql_query("SELECT * FROM noticias WHERE titulo LIKE '%".$stringBusca."%' OR data LIKE '%".$stringBusca."%' OR noticia LIKE '%".$stringBusca."%' AND ativado = 1 AND excluido = 0");

Nele eu tenho dois campos, ativado e excluido, que server para gerenciar os dados, onde, eu apenas "SETO" valores como 1(= a true) e 0(= a false) para os mesmos....

 

Mas aqui ele não está aceitando a minha exigencia. Tenho na tabela noticia, 6 itens. Todos eles estão com o campo ativado =1 e excluido =0, MENOS o ultimo que tem esse dados trocado.

 

Porém quando eu executo o query acima, ele sempre me retorna TODOS os dados de minha tabela...

 

Executei a query no phpmyadmin para ver se naum era problema no php... mas ELE também me retornou todos os dados da tabela..

 

» Tem algo de errado na query que mostrei ???

» Como ajeito isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sqlNoticia = mysql_query("SELECT * FROM noticias WHERE titulo LIKE '%".$stringBusca."%' AND ativado = 1 AND excluido = 0  OR data LIKE '%".$stringBusca."%'   AND ativado = 1 AND excluido = 0 OR noticia LIKE '%".$stringBusca."%' AND ativado = 1 AND excluido = 0");

Tenta este aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Yeap!!!!

Agora funcionou certinho.... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Mas por quê que tenho q repetir tanto??? Seria como se a pesquisa fosse isolada.. tipo: Quando eu ponho

titulo LIKE '%".$stringBusca."%' AND ativado = 1 AND excluido = 0
, seria como se essa consulta fosse isolada das outras???

 

Como eu não tinha especificado para essas outras consultas, ele sempre ia retornar todos os titulos, de qqr maneira!!!

 

 

» Acertei a lógica???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num manjo muito de SQL não mais acho que é mais ou menos o seguinte...

 

Este era seu code né...

SELECT * FROM noticias WHERE titulo LIKE '%".$stringBusca."%' OR data LIKE '%".$stringBusca."%' OR noticia LIKE '%".$stringBusca."%' AND ativado = 1 AND excluido = 0

Traduzindo:

 

Digamos que a Letra digitada pelo usuario foi "A"

SELECIONE tudo da TABELA Noticias ONDE TITULO comece com A OU DATA comece com A ou Noticia Comece com A e noticia seja ativado seja igual a 1 e excluido = 0.

Ele leva em conta apenas se a noticia começar com A ai ele vai ver a condição ativado e excluido...

 

Me corrijam se estiver errado é bom que eu aprendo também....

Compartilhar este post


Link para o post
Compartilhar em outros sites

A busca está funcionando direitinho agora.... só que tá aparecendo uma erro estranho aqui...

Alguem sabe o que eh isto aqui:  ????

 

Isso () apareceu um bocado de vez na página. eu puz todo o codigo das buscas em arquivos separados e chamei-os por includes.... e daí começou com isso...

 

» Qual o problema dos includes nisso... alguem sabe????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em um exemplo de paginação que eu usei aqui do forum mesmo, usando ajax, eu resolvi o problema desses caracteres estranhos alterando o header para UTF-8, .... mas nas outras páginas de meu site, tem sempre uns includes que retornam esses caracteres ... e mesmo alterando o header como no outro exemplo, ele continua a exibi-los... =/

 

 

» O que será q causa esse erro???

» É configuração do php, ou BUG???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.