Jump to content


Photo

Filtro De Pesquisa


  • Faça o login para participar
7 replies to this topic

#1 Livia Rodrigues

Livia Rodrigues

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Feminino
  • Localidade:Rio de Janeiro

Posted 08/02/2012, 11:12

Galera estou com um problema quanto ao filtro de busca em uma pagina que lista dados registrados no BD.

O código é o seguinte:
function getuserlistList($limitUp, $limitDown , $order_by, $sortBy, $array) {
         
                require_once(COMM_PATH."DatabaseManager.php");
                $db=new DatabaseManager();
                
         
                 $condetion     ='';
                        if(isset($array['username'])) {
                                if($array['username'] != '') {
                                        $name   =       $array['username'];
                                        $condetion.=" and users.firstname = '$name'";
                                
                                }
                        }
                        if(isset($array['usertype'])) {
                                if($array['usertype'] != '') {
                                         
                                        $usertype=$array['usertype'];
                                        $condetion.=" and users.type = '$usertype' ";
                                }
                        }
                                if(isset($array['atividade'])) {
                                if($array['atividade'] != '0') {

                                        $atividade=$array['atividade'];
                                        $condetion.=" and resume.your_characteristics_option1 = '$atividade' or  resume.your_characteristics_option2 = '$atividade' or  resume.your_characteristics_option3 = '$atividade' ";
                                }
                        }
                        
                        if(isset($array['estado'])) {
                                if($array['estado'] != '0') {

                                        $estado=$array['estado'];
                                        $condetion.=" and users.state = '$estado' ";
                                }
                        }


                        
                        if(isset($array['usertype'])) {
                                if($array['userstatus'] != '') {
                                
                                         
                                        $userstatus=$array['userstatus'];
                                        $condetion.=" and users.is_active = '$userstatus' ";
                                }
                        }
                        if(isset($array['mail'])) {
                                if($array['mail'] != '') {
                                        $mail=$array['mail'];
                                        $condetion.=" and users.email = '$mail' ";
                                }
                        }
                        

                        

                 
                  $query = "SELECT users.*,resume.your_characteristics_option1, resume.your_characteristics_option2,
resume.your_characteristics_option3 FROM users inner join resume ON users.id = resume.user_id  
where users.id !='' ".$condetion."ORDER BY users.id desc LIMIT $limitUp,$limitDown ";

                $result= $db->executeQuery($query);
                return $result ;
         
         }


O que acontece é:
Eu tive uns problemas pra fazer com que fossem listadas as atividades por elas estarem em outra tabela, por que ainda não conhecia bem o inner join, mas o problema foi resolvido. Agora o meu problema é que quando eu tento fazer uma busca filtrando pelas atividades, aparece a mensagem (nenhum registro encontrado).. Isso só acontece quando tento filtrar por atividades. os outros filtros funcionam perfeitamente.

Agem sabe me dizer por que?
Perguntei em um outro forum mas nao tive nenhuma resposta. :/

Obrigada desde já, Lívia Rodrigues

#2 Diego Bezerra

Diego Bezerra

    Diego Bezerra

  • Moderadores
  • 938 posts
  • Sexo:Masculino
  • Localidade:Amazonas
  • Interesses:Iniciando no C# com MSSQL.

Posted 08/02/2012, 17:26

Ola Livia o geito ai para mim descobrir era só se eu testasse, mais oque vc pode tentar fazer e usar o debug / debugar...
Att.
Diego Bezerra
Agência Kernel - em Breve
Email/msn: diegobezerra@outlook.com
Facebook

#3 Livia Rodrigues

Livia Rodrigues

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Feminino
  • Localidade:Rio de Janeiro

Posted 09/02/2012, 08:28

Oi diego, Obrigada por te vindo dar uma olhadinha.
Eu to editando os codigos no dreamweaver, que programa eu uso para debugar?

#4 Diego Bezerra

Diego Bezerra

    Diego Bezerra

  • Moderadores
  • 938 posts
  • Sexo:Masculino
  • Localidade:Amazonas
  • Interesses:Iniciando no C# com MSSQL.

Posted 09/02/2012, 11:29

Ola Livia, não e um programa, são class para analize de codigo olha estas duas ai

1° PHP Debug = Pode mostrar informação dos tempos de processamento do codigo PHP e MYSQL, verificar a performace de um trecho do codigo etc.
2° PHP CodeSniffer - um script para detectar se o codigo PHP segue as regras standar, e uma otima ferramenta util para manter o codigo unificado..


ja dei uma olhada no PHP Debug o outro ainda não mais parece ser bom o seu caso o primeiro pode de ajudar muito... pesquisa no google pelo nome dele
Att.
Diego Bezerra
Agência Kernel - em Breve
Email/msn: diegobezerra@outlook.com
Facebook

#5 Fernando C

Fernando C

    Ativo

  • Usuários
  • 371 posts
  • Sexo:Masculino
  • Localidade:SP

Posted 09/02/2012, 12:25

Livia, observe bem; nessa sua consulta:
$query =
"SELECT users.*,
resume.your_characteristics_option1,
resume.your_characteristics_option2,
resume.your_characteristics_option3
FROM
users
inner join
resume
ON users.id = resume.user_id
where users.id !='' ".$condetion."
ORDER BY users.id desc LIMIT $limitUp,$limitDown ";
só está sendo filtrado o usuario
(linha que começa por "where")
onde está o filtro por atividade?
verifique isso

qqer coisa retorne

Edição feita por: Fernando C, 09/02/2012, 12:27.


#6 Livia Rodrigues

Livia Rodrigues

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Feminino
  • Localidade:Rio de Janeiro

Posted 09/02/2012, 14:09

Fernando, desculpa não entendi.
O filtro de atividades não deveria estar em $condetion?
esse where eu usei só pra ele nao listar usuarios que não tivessem sido cadastrados corretamente ( que nao tivessem o campo id preenchido), de qualquer forma, o select funciona, pois as atividades são listadas e aparecem na tabela olha:

Posted Image

O select funciona direitinho, o que não funciona é a condição para filtragem :/
E isso só acontece com o campo atividades, as outras opções de filtragem estão corretas e funcionando. :( :(

#7 Fernando C

Fernando C

    Ativo

  • Usuários
  • 371 posts
  • Sexo:Masculino
  • Localidade:SP

Posted 09/02/2012, 21:18

Oi, Livia..

O select funciona direitinho, o que não funciona é a condição para filtragem :/
E isso só acontece com o campo atividades, as outras opções de filtragem estão corretas e funcionando. :( :(

sim, exatamente..
eu vi seus posts no outro forum..
essa sua pesquisa (das atividades) é 1 pouco diferente..
pq a tabela tem tres colunas
e as tres tem resultados q podem t interessar..
então use OU.. (OR)
faz o seguinte: abstraia - por enquanto - a tabela users;
como vc faria uma pesquisa apenas na tabela resume?
seria:
selecione dados
da tabela
ONDE coluna = criterio OU coluna2 = mesmo criterio etc..
ate aí ok?
assim (no seu exemplo, so encurtei os nomes das colunas):
select *
from resume
where 
option1='Arrumadeira'
or option2='Arrumadeira'
or option3='Arrumadeira';
agora, é claro que usa-se um formulario em vez da palavra exata, concorda?
então vamos supor que o campo do formulario se chame 'profissao'.
No PHP:
1. declare a variavel que pega a palavra digitada no campo do form:
$profis=$_POST['profissao'];
2. a query ficaria assim:
select * from resume
WHERE option1 = '$profis'
OR option2 = '$profis'
OR option3 = '$profis' ;
faça um teste só c/ essa parte;
se td estiver ok... vamos complementar a tarefa...
como vc precisa relacionar 2 tabelas
eu tentei assim:
SELECT users.*, resume.option1,  resume.option2,  resume.option3
FROM users inner join resume
ON users.id = resume.user_id
WHERE option1 = '$profis'  or option2 = '$profis'  or option3 = '$profis' ;
(lembre-se que eu encurtei os nomes das colunas;
corrija isso para o seu caso)
fiz aqui (tb uso Dreamweaver) e deu certinho..
agora é contigo.. veja ai se t ajuda..

Edição feita por: Fernando C, 09/02/2012, 21:21.


#8 loviss

loviss

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino

Posted 17/02/2012, 00:35

mais oque vc pode tentar fazer e usar o debug / debugar... Posted Image




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq