nmoa Posted November 23, 2015 at 12:16 PM Report Share #590002 Posted November 23, 2015 at 12:16 PM boa tarde estou aqui com uma dúvida estou a desenvolver um site que precisa de ter uma pesquisa de imoveis. essa pesquisa terá que ir buscar o valores a várias tabelas. o que tenho feito é isto : $palavras= $_POST["dados"]; $arrDelimiters = array("''"," em "," na "); $inputText = $palavras; $uniformText = str_replace($arrDelimiters,"-|-", $inputText); $divididas = explode("-|-", $uniformText); //$divididas = explode(array(" em "," na "," "),$palavras); $contagem =count($divididas); aqui vou buscar a palavra pesquisada e divido-a for ($i=0; $i<$contagem;$i++){ $queryLike[] = "des.nome LIKE '%".$divididas[$i]."%' OR c.nome LIKE '%".$divididas[$i]."%' OR f.nome LIKE '%".$divididas[$i]."%' "; $query[] ="t.nome LIKE '%".$divididas[$i]."%'"; }; $where = implode(" OR ", $queryLike); $tipo = implode(" OR ", $query); echo $where."e mais :".$tipo ; $local =mysql_query("SELECT * FROM imovel as i INNER JOIN`imovel_localizacao` as l ON l.`id_imovel`=i.`id_imovel` INNER JOIN`imovel_caracteristicas` as caract ON caract.`id_imovel`=i.`id_imovel` INNER JOIN `destritos` as des ON des.`id_destritos`=l.`id_destritos` INNER JOIN `concelhos` as c ON c.`id_concelhos`=l.`id_concelhos` INNER JOIN `freguesia` as f ON f.`id_freguesia`=l.`id_freguesia` INNER JOIN `tipologia` as t ON t.`id_tipologia`=caract.`id_tipologia` INNER JOIN `imovel_valor` as v ON v.`id_imovel`=i.`id_imovel` WHERE ".$where." AND ".$tipo." "); $resultado = mysql_num_rows($local); echo "valor: ".$resultado; o problema aqui é se procurar "t3 em sintra", aparece-me todo os imoveis de sintra e não só os T3 está a faltar aqui alguma coisa de certeza este é o resultado que dá do echo where e tipo Procuro por: t1 em sintra des.nome LIKE '%t1%' OR c.nome LIKE '%t1%' OR f.nome LIKE '%t1%' OR des.nome LIKE '%sintra%' OR c.nome LIKE '%sintra%' OR f.nome LIKE '%sintra%' e mais :t.nome LIKE '%t1%' OR t.nome LIKE '%sintra%'valor: 115Foram encontrados 115 imóveis na sua pesquisa Link to comment Share on other sites More sharing options...
acao Posted November 23, 2015 at 04:08 PM Report Share #590012 Posted November 23, 2015 at 04:08 PM (edited) boas, presumo que ´seja no where, porque o sql está a espera de receber o nome do campo da tabela com o parâmetro (=<> etc) e respetivo valor e penso que não está acontecer. cumps acao Edited November 23, 2015 at 04:20 PM by acao Link to comment Share on other sites More sharing options...
nmoa Posted November 23, 2015 at 04:49 PM Author Report Share #590017 Posted November 23, 2015 at 04:49 PM Boas mas o where está com LIKE não precisa dos operadores obrigado na mesma Link to comment Share on other sites More sharing options...
Solution HappyHippyHippo Posted November 23, 2015 at 05:07 PM Solution Report Share #590018 Posted November 23, 2015 at 05:07 PM coloca parênteses WHERE (".$where.") AND (".$tipo.") "); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
acao Posted November 23, 2015 at 05:30 PM Report Share #590022 Posted November 23, 2015 at 05:30 PM boas continuo a pensar que $where e $tipo não retorna o sql devido, imprime as variáveis a amostra-as. cumps acao Link to comment Share on other sites More sharing options...
nmoa Posted November 23, 2015 at 06:04 PM Author Report Share #590024 Posted November 23, 2015 at 06:04 PM Em 23/11/2015 às 18:07, HappyHippyHippo disse: coloca parênteses WHERE (".$where.") AND (".$tipo.") "); Obrigado deu 🙂 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