Jump to content

[RESOLVIDO]Queries em Pesquisa


senna
 Share

Recommended Posts

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.

http://img192.imageshack.us/img192/8120/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

Link to comment
Share on other sites

Não percebo nada de PHP (ainda  👍 ) 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  😁

Link to comment
Share on other sites

<?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  👍

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...

Link to comment
Share on other sites

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...

Link to comment
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
 Share

×
×
  • Create New...

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.