Josias Postado Fevereiro 23, 2011 Denunciar Share Postado Fevereiro 23, 2011 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marcosfj1 Postado Fevereiro 23, 2011 Denunciar Share Postado Fevereiro 23, 2011 Cara pelo que eu entendi você quer buscar muitos itens de uma vez, tipo verificar no banco se tem laranja e maça?Tenta explicar melhor, que ficou um pouco confusoValeu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Fevereiro 23, 2011 Denunciar Share Postado Fevereiro 23, 2011 i aew Josias, bom tenta assim:$q = implode("','",explode(" ", str_replace(",","","laranja, maçã"))); "SELECT * FROM frutas WHERE fruta in('{$q}')";espero que ajude abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Josias Postado Fevereiro 23, 2011 Autor Denunciar Share Postado Fevereiro 23, 2011 Marcos,A ideia é realmente fazer a busca com vários itens, mas fazendo com que eles se individualizem.RomeritoVocê 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Fevereiro 24, 2011 Denunciar Share Postado Fevereiro 24, 2011 cara acho que você está fazendo coisas desnecessárias, tenta fazer assim:SELECT * FROM frutas WHERE fruta in(SELECT fruit FROM esolha)acho que assim, não vai precisar fazer todo aquele código!até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Josias Postado Fevereiro 24, 2011 Autor Denunciar Share Postado Fevereiro 24, 2011 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Josias
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:
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
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.