Jump to content
Sign in to follow this  
rebortec

Script de pesquisa avançada PHP/MySQL

Recommended Posts

rebortec

Boas Pessoal,

Este é o meu código que contem a $busca no entanto queria inserir mais uma ou mais tarde até mais variáveis para busca.

Será que me podem ajudar? Já consegui fazer busca pelos dois campos só que deixou de fazer paginação.

Share this post


Link to post
Share on other sites
KTachyon

Penso que não estou perceber bem o que queres. Mas há 3 coisas que deves fazer:

1. Quando colocas ao bbcode 'code', coloca 'code=php' para colorir o código e facilitar a leitura.

2. Cuidado com as password e endereços de servidores em cleartext quando estás a colocar o código no fórum. Idealmente, devias colocar os dados de acesso ao servidor num ficheiro .php à parte e fazer o include no que pretendes mostrar.

3. (Relacionado com a dúvida) Coloca uns echo, ou print no código para te aperceberes melhor do output que te está a ser dado. Por vezes ajuda se mandares imprimir as queries e os valores de algumas variáveis quando estás a testar para conseguires verificar que está tudo a correr bem.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
rebortec

Obrigado pelo aviso nem tinha reparado,

tenho o echo no final e este sei que está a funcionar, mas este só tem um campo.

Eu queria algo tipo hotfrog.pt uma pesquisa com dois campos ou mais e não só com um

Share this post


Link to post
Share on other sites
KTachyon

Tenta fazer um echo às queries sql, para ver se elas estão as duas bem formadas. O código parece-me bem à primeira vista, mas às vezes há coisas que escapam. Se fores fazendo echo a certas coisas, por vezes consegues detectar o erro facilmente. Depois apagas para ficares com a página perfeita novamente.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
rebortec

Boas, fiz da seguinte forma:

$sql = "SELECT * FROM empresa";
if ($_GET['pesquisa'] == 'Pesquisar') {
// busca apenas por nome
if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' ";
}
// busca apenas por onde
else if ($_GET['o_que'] == " " AND $_GET['onde'] != " ") {
$sql .= " WHERE concelho LIKE '%".$_GET['onde']."%' ";
}

// busca nome e onde
else if ($_GET['o_que'] != " " AND $_GET['onde'] != " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' AND distrito LIKE '%".$_GET['onde']."%' ";
}
} // fim do get_buscar
$queryEmpresa = mysql_query($sql) or die(mysql_error());
while ($resultado = mysql_fetch_array($queryEmpresa)) {
$titulo = $resultado['nome'];
echo '<a class="titulo" href="">'.$titulo.'</a>';

Está a funcionar, mas por exemplo assim funciona:

if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' ";
}

Mas preciso que pesquise em mais do que uma coluna da tabela e se colocar OR não funciona.

Exemplo que não funciona:

if ($_GET['o_que'] != " " AND $_GET['onde'] == " ") {
$sql .= " WHERE nome LIKE '%".$_GET['o_que']."%' OR categoria LIKE '%".$_GET['o_que']."%' ";
}

Podem-me ajudar?

Por exemplo queria que se procura-se só por onde, pesquisa-se nas colunas (Localidade, CP, Morada, Distrito, Concelho) e o activo='1'

Share this post


Link to post
Share on other sites
rebortec

Já Funca ;)

Agora tou com problemas com a pesquisa quando contém por exemplo "ç":s

O que posso fazer?

Share this post


Link to post
Share on other sites
rebortec

Se por exemplo pesquisa por "pa" ou "pacos" encontra Paços se procurar por "Paços" Não encontra

Share this post


Link to post
Share on other sites
ruimcosta

A seguir ao $sql... faz um echo $sql, para te retornar o sql que está a executar. Quase de certeza que quando digitas o Ç, ele irá em vez de passar o Ç, passar o respectivo código html do Ç que é Ç  ou para o ç ç

Tem a ver com a codifiação de caracteres da página, ou então para testares, onde tens

$_GET['onde']

troca por

html_entity_decode($_GET['onde'])


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
rebortec

Este é o echo do sql:

SELECT * FROM empresa WHERE activo = '1' AND (morada LIKE '%ç%' OR localidade LIKE '%ç%' OR distrito LIKE '%ç%' OR concelho LIKE '%ç%' OR cp LIKE '%ç%') ORDER BY nome DESC LIMIT 0, 1

Share this post


Link to post
Share on other sites
ruimcosta

E não retorna Paços? Executa directamente na base de dados.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
ruimcosta

O que deste a entender é que não retornava nada....

A variavel $row['qualquer_coisa'] que retorna as localidades, mete: utf8_decode($row['qualquer_coisa'])


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
rebortec

mesmo assim se procurar por pacos encontra:

PA?

se procurar por paços não encontra nada

Share this post


Link to post
Share on other sites
rebortec

Já consegui

Utilizo

mysql_query("SET NAMES 'utf8'");
        mysql_query('SET character_set_connection=utf8');
        mysql_query('SET character_set_client=utf8');
        mysql_query('SET character_set_results=utf8');

Share this post


Link to post
Share on other sites
KTachyon

Chama as seguintes queries e mostra o resultado:

show variables like "character_set_database";
show variables like "collation_database";


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
rebortec

estive a pesquisar mas não consegui com fulltext.

Agora tenho um problema que é ao inserir atravéz do form de registo na bd fica com os tais caracteres $%#"

Share this post


Link to post
Share on other sites
rebortec

já resolvi ;)

tenho que inserir

<?php  mysql_query("SET NAMES 'utf8'");
        mysql_query('SET character_set_connection=utf8');
        mysql_query('SET character_set_client=utf8');
        mysql_query('SET character_set_results=utf8');
?> 

em todos os includes :s

inseri no header mas não funciona

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  

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