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

Busca em várias tabelas (Resolvido)


MTavares

Pergunta

Caros colegas.

Eu tenho um formulário do qual tem os seguintes campos:

Funcionário (sim ou não), Estado, Cidade, Profissao desejada, etc.

Essa busca pecorre 4 tabelas, então criei essa solução do qual funciona quase 100%, vejam:

// Tabela Dados Pessoais

             if(!empty($_POST["CidadeBusca"])){
                 $campos[] .= "Cidade";
                 $buscar[] .= "tabelaDados.Cidade = '".mysql_real_escape_string($_POST["CidadeBusca"])."'";
             }
             if(!empty($_POST["EstadoBusca"])){
                 $campos[] .= "Estado";
                 $buscar[] .= "TabelaDados.Estado = '".mysql_real_escape_string($_POST["EstadoBusca"])."'";
             }

// Tabelas Informações

             if(!empty($_POST["Funcionario"])){
                 $campos[] .= "Funcionario";
                 $buscar[] .= "tabelaInformacoes.Funcionario = '".mysql_real_escape_string($_POST["Funcionario"])."'";
             }

// Tabela Profissões

             if(!empty($_POST["Profissoes"])){
                 $campos[] .= "ProfissaoDesejadaI, ProfissaoDesejadaII, ProfissaoDesejadaIII";
                 $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaI = '".mysql_real_escape_string($_POST["Profissoes"])."'";
                 $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaII = '".mysql_real_escape_string($_POST["Profissoes"])."'";
                 $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaIII = '".mysql_real_escape_string($_POST["Profissoes"])."'";
             }
......

// Query
            $tabela = mysql_query("SELECT ".implode(",",$campos)." FROM " .implode(",",$tabelas). " WHERE " .implode(" AND ",$buscar). $group);

A busca funciona perfeitamente, mas quando selecionamos o campo profissoes, ele não retorna resultados, pois como na tabela Profissoes tem os campos ProfissaoDesejada I II e III, ele me retorna tabelaProfissoes.ProfissaoDesejadaI = 'Engenheiro' AND tabelaProfissoes.ProfissaoDesejadaII = 'Engenheiro' AND tabelaProfissoes.ProfissaoDesejadaIII = 'Engenheiro' , ou seja, quando a busca em uma determinada tabela tem mais de um campo para buscar, ele não retorna exatamente por causa do "AND".

Abs.

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

1 resposta a esta questão

Posts Recomendados

  • 0

A solução foi criar query dentro das condicionais e com o resultado, criar outras condicionais, assim, me deu mais segurança na busca. Ex.:

if(!empty($_POST["Profissoes"])){

                $sqlProfissaoI = mysql_query("SELECT * FROM tabelaprofissoes WHERE ProfissaoDesejadaI = '".$_POST["Profissoes"]."'");
                $contarProfissaoI = mysql_num_rows($sqlProfissaoI);
           
                 if($contarProfissaoI > 0){
                   $campos[] .= "ProfissaoDesejadaI";
                   $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaI = '".mysql_real_escape_string($_POST["Profissoes"])."'";
                }
     
                 $sqlProfissaoII = mysql_query("SELECT * FROM tabelaprofissoes WHERE ProfissaoDesejadaII = '".$_POST["Profissoes"]."'");
                $contarProfissaoII = mysql_num_rows($sqlProfissaoII);
           
                 if($contarProfissaoII > 0){
                    $campos[] .= "ProfissaoDesejadaII";
                    $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaII = '".mysql_real_escape_string($_POST["Profissoes"])."'";
                }

                $sqlProfissaoIII = mysql_query("SELECT * FROM tabelaprofissoes WHERE ProfissaoDesejadaIII = '".$_POST["Profissoes"]."'");
                $contarProfissaoIII = mysql_num_rows($sqlProfissaoIII);

                 if($contarProfissaoIII > 0){
                    $campos[] .= "ProfissaoDesejadaIII";
                    $buscar[] .= "tabelaProfissoes.ProfissaoDesejadaIII = '".mysql_real_escape_string($_POST["Profissoes"])."'";
                }
             }

Abs.

Editado por MTavares
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,2k
    • Posts
      652k
×
×
  • Criar Novo...