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

subkiller

pesquisa na pagina

14 mensagens neste tópico

boas

eu estava aqui a tentar desenvolver um motor de pesquisa para o meu site mas gostava de pedir umas opinioes...

eu fiz um SELECT a todas as minhas tabelas da base dados para procurar em todos os campos que me interesassem e depois tentei comparar o valor da textbox com os campos da bd para ver se encontrava alguma coisa igual...

é a forma mais correcta de fazer isto?

alguem me pode indicar um tutorial sobre isso?

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu fiz o meu select assim:

SELECT campo1, campo2 FROM tabela1 UNION

SELECT campo1, campo2 FROM tabela 2 UNION

....

WHERE tabela1.campo1 = $pesquisa OR tabela1.campo2=$pesquisa

foi uma coisa deste genero....

vou ver o link que me deste.

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao, estava a ver outra coisa... mas mais logo vou experimentar.

obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes fazer assim

select * from tabela,tabela1 where desc='%au%'....

algo mais completo assim

http://devzone.zend.com/node/view/id/1304

WHERE campo='%alguma coisa%' não é correcto.

O operador = é usado para comparações estáticas/definidas, enquanto que quando queres procurar um palavra num conjunto de texto, o operador correcto a ser usado é o LIKE.

SELECT campos FROM tabela WHERE campo LIKE '%alguma coisa%'

Aprendes umas bases porreiras aqui: http://w3schools.com/sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Resolvido, se alguem quiser, eu posso disponibilizar o codigo...  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Posta aqui. Assim se alguém procurar, encontra logo. É mais simples. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ta simples, menos a minha query:

if(isset($_GET["pesquisar"]))
{
if(!($id = mysql_connect($server, $username, $password))) 
{
       return 0;
    }

    if (mysql_select_db($database, $id))
{
	$pesquisa=$_GET["pesquisa"];

	if($pesquisa<>"")
	{
		//query
		$query="SELECT * FROM tabela WHERE 
		tabela.nome LIKE '%$pesquisa%' OR
                        tabela.descricao LIKE '%$pesquisa%'
                        UNION
		SELECT * FROM tabela2 WHERE
		tabela2.nome LIKE '%$pesquisa%' OR
                        tabela2.descricao LIKE '%$pesquisa%''";

		$res=mysql_query($query) or die(mysql_error());
		$count=mysql_num_rows($res);
		if($count==0)
		{
			$warning = "<font color='red'>A sua pesquisa nao encontrou resultados</font>";
		}
		else
		{
			$warning = "<font color='green'>A sua pesquisa \"".$pesquisa."\" deu ".$count." resultados:</font><br>";
			//$warning .= "<table border=1>";
			//$warning .= "<tr><td>mensagem</td><td>texto</td></tr>";
			$warning .= "<p><h6>Resultados:</h6></p>";
			while($reg=mysql_fetch_array($res, MYSQL_NUM))
			{
			    //$warning .= "$reg[0]<br>";
				$warning .= "<p>$reg[1]</p>";
			}
			//$warning .= "</table>"; 
		}
	}
	else
	{
		$warning = "<font color='red'>Campo pesquisa vazio</font>";
	}
}
}

nao esta comentado mas é um codigo simples.... xD

depois basta fazer:

if(isset($warning))

{

echo "$warning";

}

onde quiser listar os resultados

o form:

<form action="index.php" method="GET">

<input type="text" name="pesquisa" value="Pesquisar">

<input type="submit" name="pesquisar" value="pesquisar">

</form>

kualker duvida digam...  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de usares os dados do GET, tens de escapar possiveis caracteres que possam alterar a tua query. Isto, se não quiseres ter bases de dados vazias, entre outras surpresas menos agradáveis ;)

Tão simples como fazer

<?php
$pesquisa = mysql_real_escape_string($_GET["pesquisa"]);
?>

e evita muitos problemas.

de realçar que é necessária uma ligação a um servidor mysql, que já está lá em cima.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se tas preocupado com segurança podes fazer assim

mysql_db_query("base_de_dados", sptrinf("....%s...",mysql_real_escape_string(trim($_GET["pesquisa"]))));

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se tas preocupado com segurança podes fazer assim

mysql_db_query("base_de_dados", sptrinf("....%s...",mysql_real_escape_string(trim($_GET["pesquisa"]))));

sprintf("%s", mysql_real_escape_string($_GET['pesquisa']));

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora