Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

senna

[RESOLVIDO]Queries em Pesquisa

Mensagens Recomendadas

senna

Olá pessoal,

Tenho uma base de dados com informações sobre as pessoas, nome, idade, passw e mail. Consigo introduzi-las bem na base de dados, o problema é pesquisar.

capturadeecr20100108160.jpg

Consigo ver todas as entradas com "SELECT * FROM data" e consigo ver as que pesquisar escrevendo todos os dados (p. ex. escrevendo o nome, idade, passw e mail, "SELECT * from data where nome='$nome' and idade='$idade' and email='$email'") mas não consigo pesquisar apenas preenchendo um campo ou mais. Apenas dá preenchendo todos...

Não sei se me consegui explicar bem :S

Podem ajudar?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruileal

Não percebo nada de PHP (ainda  :thumbsup: ) mas não consegues construir a query numa string e depois executa-la?

Dessa forma verificavas se o nome não for vazio acrescentavas AND nome='$nome' a essa string, se a idade não for vazia acrescentavas AND idade='$idade' a essa string etc etc e depois executas o comando sql guardado na string...É assim que resolvo este tipo de situações  :cheesygrin:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
diokhan

<?php

$project = $_POST['project'];
$idPlate = $_POST['idPlate'];
$date = $_POST['date'];
$client = $_POST['client'];
$type = $_POST['projectType'];

        $szTemp = "";
        $szInnerJoin = "";
        $bFirst = true;
        if ($project != ""){
                $szTemp = " WHERE P.NAME_PROJECT LIKE '%".$_POST['project']."%' ";
        }
        if ($idPlate != ""){
                if (!empty($szTemp)){
                        $szTemp .= "AND ";
                }
                else{
                        $szTemp .= " WHERE ";
                }
                $szTemp .= "P.ID_PLATE LIKE '%".$_POST['idPlate']."%' ";
        }
        if ($date != ""){
                if (!empty($szTemp)){
                        $szTemp .= "AND ";
                }
                else{
                        $szTemp .= " WHERE ";
                }
                $szTemp .= "P.DATE like '%".$_POST['date']."%' ";
        }
        if ($client != ""){
                if (!empty($szTemp)){
                        $szTemp .= "AND ";
                }
                else{
                        $szTemp .= " WHERE ";
                }
                $szTemp .= "CL.NAME_CLIENT like '%".$_POST['client']."%' ";
                $szInnerJoin = "Inner Join TASK as T ON P.ID_PROJECT = T.ID_PROJECT Inner Join CLIENT as CL ON CL.ID_CLIENT = T.ID_CLIENT";
        }
        if ($type != "NAME_PROJECT_TYPE" AND (!empty($type))){
                if (!empty($szTemp)){ $szTemp .= "AND "; }
                else{ $szTemp .= " WHERE "; }
                $szTemp .= "PT.ID_PROJECT_TYPE = '".$_POST['projectType']."' ";
        }
       
        $paginacao->sql = "SELECT distinct(P.ID_PROJECT), P.NAME_PROJECT, P.DATE, PT.NAME_PROJECT_TYPE FROM PROJECT as P
                                          Inner Join PROJECT_TYPE as PT on PT.ID_PROJECT_TYPE = P.ID_PROJECT_TYPE " . $szInnerJoin . $szTemp . " ORDER BY P.DATE ASC";
?>

só precisas de adaptar isto para o teu caso, qualquer duvida avisa

PS: este é o meu código, mas da para teres umas ideias gerais de como fazer para ti. adapta para o que precisas e em caso de duvida perguntas  :thumbsup:

PS2: e o tópico esta no lugar errado, pede a um moderador para colocar no lugar correcto, para dentro das

-Dúvidas e Ajudas

...Join the dark side...and get a free cookie...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KiNgPiTo

Não podes efectuar uma pesquisa associando variáveis que sabes que à partida estão nulas ou vazias porque ao pesquisar esse mesmo valor vai ser comparado com o que está na BD e não vai ser encontrado... Sugiro que cries uma condição para veres que valores estão preenchidos e se realmente estiverem preenchidos então aí é que inseres a query...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.