Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Buscador php-mysql

Estas en el tema de Buscador php-mysql en el foro de Mysql en Foros del Web. He creado un buscador para buscar por nombre o apellidos ciclistas guardados en la db, pero si tienen tilde no me los encuentra :S es ...
  #1 (permalink)  
Antiguo 29/05/2012, 13:43
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Buscador php-mysql

He creado un buscador para buscar por nombre o apellidos ciclistas guardados en la db, pero si tienen tilde no me los encuentra :S es decir busco "Díez" y a pesar de que hay corredores guardados con ese apellido no me los encuentra, tampoco buscando "Diez", he buscado por el foro soluciones pero no me ha funcionado ninguna, seguro que es una tontería, pero no encuentro el fallo. Os dejo los códigos a ver:

El html del buscador:
Código HTML:
<form action="../resultados/" method=POST>
<b>Buscar:</b> <input type=text name=key>
<br>Buscar por: <input type=radio name=buscarpor value=nombre> Nombre <input type=radio name=buscarpor value=apellidos> Apellidos
<br><input type=submit value="Buscar!">
</form> 
El código php del buscador
Código PHP:
<?

@$buscarpor $_POST["buscarpor"];
@
$key $_POST["key"];

if (
$buscarpor!=NULL or $key!=NULL) {
$host_db "*********"
$usuario_db "*********"
$pass_db "**********"
$base_db "********"
$coneccion mysql_connect($host_db$usuario_db$pass_db);
mysql_select_db($base_db$coneccion);

$select "SELECT nombre, apellidos FROM nuke_corredores_cc WHERE $buscarpor LIKE '%$key%' ORDER BY apellidos ASC";

$resultados mysql_query($select$coneccion);
$cantresult mysql_num_rows($resultados);

echo 
"Búsqueda de $key ($buscarpor):<br><br>";

while(
$myrow mysql_fetch_array($resultados))
{
   
   
$nombre "nombre";
   
$apellidos "apellidos";
   echo 
"".utf8_encode($myrow[$nombre])." ".utf8_encode($myrow[$apellidos])."<br>";
}

mysql_close($coneccion);
}
else echo 
"No se puede acceder directamente";
?>
El Create Table
Código:
CREATE TABLE `nuke_corredores_cc` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nombre` varchar(50) COLLATE latin1_general_ci NOT NULL,
 `apellidos` varchar(50) COLLATE latin1_general_ci NOT NULL,
 `nacionalidad` int(3) NOT NULL DEFAULT '0',
 `nacimiento` date NOT NULL DEFAULT '1900-00-00',
 `lugar_de_nacimiento` varchar(100) COLLATE latin1_general_ci NOT NULL,
 `fallecimiento` date DEFAULT NULL,
 `debut` int(4) DEFAULT NULL,
 `retirada` int(4) DEFAULT NULL,
 `descripcion` text COLLATE latin1_general_ci,
 `comentario` text COLLATE latin1_general_ci,
 PRIMARY KEY (`id`),
 KEY `apellidos` (`apellidos`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
He de decir que el código está integrado en páginas de Wordpress aunque en archivos externos también me pasa lo mismo.

Un saludo
  #2 (permalink)  
Antiguo 29/05/2012, 14:01
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Buscador php-mysql

Hola que tal.


Checa con esto

Código PHP:
Ver original
  1. <?php
  2.         $buscarpor = $_POST["buscarpor"];
  3.     $key = $_POST["key"];
  4.    
  5.     if ($buscarpor!=NULL or $key!=NULL) {
  6.     $host_db = "tu_host";
  7.     $usuario_db = "tu_user";
  8.     $pass_db = "tu_pass";
  9.     $base_db = "tu_db";
  10.     $coneccion = mysql_connect($host_db, $usuario_db, $pass_db);
  11.     mysql_select_db($base_db, $coneccion);
  12.    
  13.     $select = "SELECT nombre, apellidos FROM nuke_corredores_cc WHERE `$buscarpor` LIKE '%$key%' ORDER BY apellidos ASC";
  14.    
  15.     $resultados = mysql_query($select, $coneccion);
  16.     $cantresult = mysql_num_rows($resultados);
  17.    
  18.     echo "Búsqueda de $key ($buscarpor):<br><br>";
  19.    
  20.     while($myrow = mysql_fetch_array($resultados))
  21.     {
  22.        
  23.        $nombre = "nombre";
  24.        $apellidos = "apellidos";
  25.        echo "".utf8_encode($myrow[$nombre])." ".utf8_encode($myrow[$apellidos])."<br>";
  26.     }
  27.    
  28.     mysql_close($coneccion);
  29.     }
  30.     else echo "No se puede acceder directamente";
  31.     }  
  32. ?>

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 29/05/2012, 14:15
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Buscador php-mysql

Gracias por la respuesta, pero sigue igual, de hecho con las comillas simples en '$buscarpor' no encuentra nada, y si las quito sigue sin encontrar los nombres con tildes :S
  #4 (permalink)  
Antiguo 29/05/2012, 14:21
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Buscador php-mysql

Y como guarda los datos con tilde en la base de datos con tilde o los codifica en otro formato
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #5 (permalink)  
Antiguo 29/05/2012, 15:08
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Buscador php-mysql

En la db están guardados con tilde
  #6 (permalink)  
Antiguo 30/05/2012, 13:34
 
Fecha de Ingreso: enero-2012
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Buscador php-mysql

Al final he conseguido arreglarlo poniendo:

Código:
$select = "SELECT id, nombre, apellidos FROM nuke_corredores_cc WHERE $buscarpor LIKE CONVERT( _utf8 '%$key%' USING latin1 ) COLLATE latin1_general_ci ORDER BY apellidos ASC";
Así al buscar algo con tilde si que me lo encuentra, por ejemplo Díez, pero si lo pongo sin ella no. Habría alguna manera de que fuera indistinto buscar Díez que Diez?

Etiquetas: tildes, buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:53.