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

Fazer consulta no Mysql usando uma de várias palavras


Josias

Pergunta

Olá pessoal,

Tudo bem?

Estou com um problema desde a semana passada e não acho a solução.

Vou usar um exemplo mais simples para melhor compreensão.

Suponhamos que eu tenha uma tabela frutas e que lá haja vários registros: laranja, limão, maçã, banana, abacate etc.

Em minha página eu faço a seguinte programação:

$q = laranja
SELECT * FROM frutas WHERE fruta = '$q'");

Com certeza ele vai me retornar um resultado positivo, pois encontrará a laranja no DB.

Agora, se minha $q for laranja, maçã ou ainda banana abacate ele me retorna um resultado vazio, já que ele vai fazer a busca exata.

Como eu faço para ele dividir e ele buscar qualquer registro que tenha laranja ou maçã?

Já tentei fazer isso quebrando a string com explode, dando loops e um monte de outros meios, mas nada feito.

Como resolver este problema complexamente simples?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Marcos,

A ideia é realmente fazer a busca com vários itens, mas fazendo com que eles se individualizem.

Romerito

Você fez exatamente o que eu precisava. Deu certinho.

Até criei uma nova string para substituir o laranja, maçã e funcionou.

Olha como ficou:

$frutas = "laranja, maçã";
$q = implode("','",explode(" ", str_replace(",","","$frutas")));
Mas na verdade há outra consulta antes dela, que vai buscar as frutas em outra tabela, ou seja, esta busca será baseada em outra busca.
$Busca = mysql_query( "SELECT * FROM esolha" ) or die( mysql_error( ) ); 
while ( $Esc = mysql_fetch_array( $Busca) ) 
{ 
    $FrutasEscolhidas = $Esc["fruit"]; 
    $frutas = "$FrutasEscolhidas";
}
$q = implode("','",explode(" ", str_replace(",","","$frutas")));
"SELECT * FROM frutas WHERE fruta in('{$q}')";

Está retornando vazio.

Curioso que se eu der ou print ou echo $frutas ele imprime todas as frutas constantes na tabela escolha.

Link para o comentário
Compartilhar em outros sites

  • 0

Romerito,

Muio boa sua solução. Funcionou perfeitamente.

Não acredito que tudo que eu queria se resumia em apenas uma linha. :wacko:

O estranho é que esta função, que eu não conhecia, não aceita implementação, ou seja, se eu fizer o seguinte código ele não acha resultado.

SELECT * FROM frutas WHERE fruta in(SELECT fruit FROM esolha) AND categoria in(SELECT fruit FROM esolha)

Por que isso?

Porque a tabela escolha poderá receber outros valores (limão, abacaxi, doce, ácido, verde etc.) e as características deverão constar na coluna categoria da tabela frutas. Assim, ele deverá buscar o registro que tenha, respectivamente, abacaxi e ácido na mesma linha nas colunas fruta e categoria.

Não sei se você entendeu ou eu compliquei mais ainda. Mas o que eu quero é fazer uma espécie de associação.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...