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

Busca em 2 tabelas e campos diferentes


D31v1d1

Pergunta

Bom dia, estou com o seguinte problema...

Tenho uma tabela categoria onde tenho 2 campos: id, categoria

Tenho outra tabela clientes onde tenho vários campos, os que estou tendo problemas é nome, categoria

Meu problema está no seguinte, estou tentando fazer uma busca no cliente tanto pelo nome como a categoria, mas a categoria do cliente é registrada não como categoria e sim id da categoria para que em possiveis alterações de nomes de categorias fique muito mais facil alterar todos os clientes futuramente.

Segue exemplo da tabela clientes:

id data hora nome categoria logo

106 2010/04/20 20:53:22 i9 Criativa 9 img/clientes/0676847f6c4df57977eac734be897b9afZ...

Segue exemplo da tabela categoria:

id categoria

9 Comunicação Visual

Meu código:

//RECEBE O QUE O USUÁRIO DIGITOU
$busca = $_POST['busca'];

//ALTERA DE ID PARA CATEGORIA
$sqlbusca = mysql_query("SELECT id, categoria FROM categoria WHERE categoria='$busca'");
    while($dados = mysql_fetch_array($sqlbusca)) {     
        $cbusca = $dados[0];
};

//BUSCA PELO NOME OU CATEGORIA
$sql = mysql_query("SELECT * FROM clientes WHERE nome LIKE '%$busca%' OR categoria LIKE '%$cbusca%'");

Quando o usuário busca pela categoria ou seja Comunicação Visual ele apresenta tudo perfeitamente, mas quando pesquisa por i9 ou i9criativa o sistema apresenta todos os clientes cadastrados no sistema, alguém pode me ajudar nesta questão, como posso fazer para que ele apresente corretamente?

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Tenho somente 1 campo de busca que buscaria pela categoria ou pelo nome do cliente anteriormente o sistema estava cadastrando a categoria na tabela de cliente pelo nome ex Comunicação Visual e estava buscando e apresentando corretamente os dois campos e como fiz uma alteração para cadastrar na tabela de cliente pelo id ex 1, se eu pesquisar por Comunicação Visual ele não irá encontrar pois está cadastrado como 1, tem alguma forma de fazer está busca com apenas 1 campo de busca?

Link para o comentário
Compartilhar em outros sites

  • 0

O que você pode fazer, e acredito que resolva seus problemas é:

Faça sua busca mais ou menos assim.

Exemplo

<select name="filtro">
<option value="nome">Nome</option>
<option value="categoria">Categoria</option>
</select>

<input name="busca" value="" type="text">
Assim o usuário vai filtrar se ele quer buscar por nome ou categoria. e na hora de fazer o select, faça mais ou menos assim
$busca = $_POST['busca'];
$filtro = $_POST['filtro'];
//BUSCA PELO NOME OU CATEGORIA
if($filtro == nome)
{
$sql = mysql_query("SELECT * FROM clientes WHERE nome LIKE '%$busca%'");
}
if($filtro == categoria)
{
$sql = mysql_query("SELECT * FROM clientes WHERE categoria LIKE '%$busca%'");
}

Link para o comentário
Compartilhar em outros sites

  • 0

É uma boa opção, não havia pensado nisso.

Mas acho que não comentei em minha duvida, para a busca uso apenas input type="text" que envia na action para a busca não estou usando nenhum combo para selecionar onde ele quer pesquisar, pois preciso de o máximo de facilidade para meu usuário pois são usuários que não entendem quase nada de site então queria deixar o mais fácil possivel para eles.

Será que existe algum meio de fazer isso que estou precisando sem usar combo?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu aconselho fazer assim, acredito que não vá atrapalhar na usabilidade, mesmo porque é apenas um filtro para selecionar pelo que quer buscar.

Assim, pelo que entendi você está pegando o valor do POST e fazendo um select na tabela de categorias e busca o id para usar no select, acredito que o erro está ai, porque não tem como saber se o cliente está digitando uma categoria realmente, e se ele não digitar, o valor da variavel $cbusca vai ser nulo, ou seja, quando você usa isso no select mais abaixo, com certeza vai dar erro.

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente não consegui achar outra alternativa, fiz como me indicou e resolveu meu problema, só retirei do segundo if as % pois senão ele apresentara todos os clientes que tiverem o numero do id pesquisado dentro do seu id, valeu pela ajuda :P

Obrigado...

Editado por D31v1d1
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...