Comunidad de diseño web y desarrollo en internet online

Motor de busqueda. Problema con la codificacion.

Citar            
MensajeEscrito el 12 Sep 2012 05:09 pm
Hola tengo un problema con un cuadro de busqueda y no se cual es la mejor manera de resolverlo.

- Base de datos : (Ya cambié la forma en la que se guardan los datos quedando de la siguiente manera)

Código :

Tabla area
-----------------------------------------------
id -->43  - titulo --> EDIFICACIÓN
id -->44  - titulo --> ENERGÍAS RENOVABLES
------------------------------------------
CHARACTER SET utf8 
COLLATE utf8_spanish2_ci

My script:

Código PHP :

header('Content-Type: text/html; charset=UTF-8');
$busqueda = $_POST['busqueda'];

// Datos de conexion:
$mysqli = new mysqli($conection['server'], $conection['user'], $conection['pass'], $conection['base']);
if (mysqli_connect_errno()) { printf("Conexión fallida: %s\n", mysqli_connect_error()); exit(); }

// Para asegurarme de que utilizo utf8 //
if (!$mysqli->set_charset("utf8")) { 
    printf("Error cargando el conjunto de caracteres utf8: %s\n", $mysqli->error); 
} else { 
    printf("Conjunto de caracteres actual: %s\n", $mysqli->character_set_name()); 
} 

@mysql_query("SET NAMES 'utf8'");

if($busqueda<>''){

$cadbusca = "SELECT id , titulo FROM area WHERE titulo LIKE '%".$busqueda."%'";

$result = mysqli_query($mysqli, $cadbusca) or die ("Error: ".mysqli_error($mysqli));
$row_cnt = mysqli_num_rows($result);

if($row_cnt>0){

echo "<p>Areas: </p><ul>";

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
echo "<li><a href='cursos.php?idarea=".$row['id']."'>" . utf8_encode($row['titulo']) . "</a></li>";
}
echo "</ul>";
}
} 


De esta forma ocurre lo siguiente:

Buscando --> edificacion --> muestra el resultado correctamente -> EDIFICACIÓN
Buscando --> energias --> no encuentra ningun resultado.
Buscando --> energ --> funciona correctamente y muesra --> ENERGÍAS RENOVABLES

Alguien sabe como hacer para que funcione correctamente?? :? :? :?
Es seguro que estoy utilizando utf8. En el foro de mysql me han dicho que esta todo correcto en lo que a la consulta se refiere! que es problema de php! Alguna ayuda??

Por condedj

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Sep 2012 06:05 pm
Debería ver todos esto funcionando para estar seguro pero así nomás, te diré que si el navegador está en modo UTF-8 (y debería estarlo a juzgar por el header que le envias) entonces el problema es que vuelves a convertir a UTF-8 una cadena que ya es UTF-8 cuando usas la función utf8_encode. Prueba quitándola y mostrando $rwo['titulo'] sin más.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Sep 2012 07:00 am
Tienes razon, pero resolviendo ese detalle me sigue fallando la aplicacion y mostrando resultados con tilde como por ejemplo edificación y no mostrando hostelería... no se que esta mal.... alguna ayudaa??

Por condedj

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Sep 2012 01:07 pm
Bueno, lo que pasa es que más allá de la codificación, el carácter "i" es distinto al carácter "í", así que si la cadena de búsqueda es "energia", no coincidirá con "energía".

Si ese es un problema grave para ti, podrías probar usando la función soundex() de SQL.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.