Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Nigre

[Resolvido] Busca por Palavra php/mysql

Recommended Posts

Fiz um sistema de busca no dreamweaver usando php/mysql, mas também estou tendo problemas com acentuação. Meu SQL está assim: SELECT * FROM tabela WHERE campo LIKE '%search%' (sendo que search é uma variavel que pega o valor inserido no formulario de busca pelo parametro de URL). No BD os caracteres estão certos, com acentos, maiúsculas e minúsculas..

 

Mas quando testo o mecanismo, se digito um palavra acentuada, por exemplo "salário", ele não retorna nenhum resultado. Já se digito a mesma palavra sem acento, "salario", ele traz todos os resultados que tem a palavra "salário", "salario", "SALÁRIO", etc... Todavia, quando realizo a busca direto no BD, usando o PHPmyAdmin, ele encontra a palavra digitada com ou sem acentos.

 

Isso me leva a crer que eu preciso de uma função no meu php, na página do formulário de pesquisa, que altere os caracteres com acentos digitados pelo usuário, em caracteres simples. Estou certo?

 

Se for isso, segue abaixo o código de minha página onde está o formulário de busca, e uma função que encontrei para alterar cacarteres. Alguém poderia adaptá-lo pra mim, pois não faço idéia de como trabalhar com o código?

 

Obrigado!

 

 

PÁGINA DE BUSCA

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<p>Busca</p>
<form id="form1" name="form1" method="get" action="resultado.php">
  <table width="500" border="0" cellspacing="0" cellpadding="0">
	<tr>
	  <td width="79" height="30">pesquise</td>
	  <td width="421" height="30"><label>
		<input name="search" type="text" id="search" size="30" />
	  </label></td>
	</tr>
	<tr>
	  <td height="30"> </td>
	  <td height="30"><label>
		<input type="submit" name="Buscar" id="Buscar" value="Buscar" />
	  </label></td>
	</tr>
  </table>
</form>
<p>  </p>
</body>
</html>

 

FUNÇÃO

<?php

function novaString($string) {
	
	$string = trim($string);
	$string = strtolower($string);

	$string = ereg_replace( '[ÁÀÂÃÄ]', 'A', $string);
	$string = ereg_replace( '[áàâãäª]', 'a', $string);
	$string = ereg_replace( '[ÉÈÊË]', 'E', $string);
	$string = ereg_replace( '[éèêë]', 'e', $string);
	$string = ereg_replace( '[ÍÌÎÏ]', 'I', $string);
	$string = ereg_replace( '[íìîï]', 'i', $string);
	$string = ereg_replace( '[ÓÒÔÕÖ]', 'O', $string);
	$string = ereg_replace( '[óòôõöº]', 'o', $string);
	$string = ereg_replace( '[ÚÙÛÜ]', 'U', $string);
	$string = ereg_replace( '[úùûü]', 'u', $string);

	$string = str_replace( 'Ç', 'C', $string);
	$string = str_replace( 'ç', 'c', $string);
		
	$string = str_replace( '´', '', $string );
	$string = str_replace( '`', '', $string );
	$string = str_replace( '~', '', $string );
	$string = str_replace( '^', '', $string );
	$string = str_replace( '¨', '', $string );

	$string = str_replace( '-', '', $string );
	$string = str_replace( '_', '', $string );
	$string = str_replace( ' ', '', $string );

	$string = substr($string, 0, 20);
		
	return $string;
}

$nome = 'PEDRO DE ALCÂNTARA FRANCISCO ANTÔNIO JOÃO CARLOS XAVIER DE PAULA MIGUEL RAFAEL JOAQUIM JOSÉ GONZAGA PASCOAL CIPRIANO SERAFIM DE BRAGANÇA E BOURBON';

print novaString($nome);

/* se quiser criar a pasta é só fazer isso abaixo
mkdir(novaString($nome));
*/

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa informação pode ajudar a identificar a fonte do problema.

 

Se no formulário de busca da página busca.php eu digito uma plavra sem acento, como "salario", ele submete e na página resultado.php traz os resultados. Ainda nesta pa´gina, o endereço de URL fica assim: http://localhost/site/resultado.php?search=salario

 

Agora, se busco por "salário", o sistema não traz resultados, e o endereço de URL fica assim:

http://localhost/site/resultado.php?search=sal%C3%A1rio

 

E aí, alguma sugestão do que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.