senna Posted January 8, 2010 at 04:15 PM Report Share #304816 Posted January 8, 2010 at 04:15 PM 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 More sharing options...
ruileal Posted January 8, 2010 at 04:22 PM Report Share #304820 Posted January 8, 2010 at 04:22 PM 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 More sharing options...
diokhan Posted January 8, 2010 at 04:38 PM Report Share #304823 Posted January 8, 2010 at 04:38 PM <?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 More sharing options...
KiNgPiTo Posted January 8, 2010 at 06:08 PM Report Share #304857 Posted January 8, 2010 at 06:08 PM 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 More sharing options...
senna Posted January 10, 2010 at 12:02 PM Author Report Share #305177 Posted January 10, 2010 at 12:02 PM Era mesmo isso que queria!!! Obrigado diokhan 🙂 Bom resto de fim-de-semana pessoal 😉 Link to comment Share on other sites More sharing options...
Ivo Pereira Posted January 10, 2010 at 01:03 PM Report Share #305186 Posted January 10, 2010 at 01:03 PM Btw, penso que concordo com o KiNgPiTo. Para quê estar a comparar variáveis que estão vazias? Apenas vai sobrecarregar mais o query sem qualquer efeito final. Já agora, se está mesmo resolvido acrescenta a tag [RESOLVIDO] no início do tópico 🙂 Link to comment Share on other sites More sharing options...
senna Posted January 10, 2010 at 08:11 PM Author Report Share #305274 Posted January 10, 2010 at 08:11 PM Sim, têm razão. Assim fica bem mais leve. Acrescentada a tag [RESOLVIDO] 🙂 Obrigado mais uma vez 😉 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now