Jump to content

pesquisa na pagina


subkiller
 Share

Recommended Posts

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.

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

Link to comment
Share on other 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...  😉

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

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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']));

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

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.