Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
senna

[RESOLVIDO]Queries em Pesquisa

Recommended Posts

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

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites
senna

Sim, têm razão. Assim fica bem mais leve.

Acrescentada a tag [RESOLVIDO] :)

Obrigado mais uma vez ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.