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

Problema con buscador

Estas en el tema de Problema con buscador en el foro de Bases de Datos General en Foros del Web. Buenas a todos, tengo un problema con un buscador, a ver si me podeis hechar un cable. A ver si me explico: Tengo un buscador ...
  #1 (permalink)  
Antiguo 26/03/2011, 00:16
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Pregunta Problema con buscador

Buenas a todos,

tengo un problema con un buscador, a ver si me podeis hechar un cable.

A ver si me explico:

Tengo un buscador en php con paginación. El caso es que cuando hago el mysql_num_rows de la consulta, este me devuelve el numero de registros que pone en el máximo de registros a mostrar en la paginación, y no el numero de registros reales que devuelve la consulta, es decir, tengo este codigo:

Código PHP:
$RegistrosAMostrar=2;
$cadbusca="SELECT * FROM $bd.contacto WHERE nombre LIKE '%$busqueda%' OR apellidos LIKE '%$busqueda%' OR email_empresa LIKE '%$busqueda%' LIMIT $RegistrosAEmpezar, $RegistrosAMostrar"
$consulta mysql_query($cadbusca,$conexion) or die(mysql_error());
$filas mysql_num_rows($consulta); 
Si hago esta consulta en el phpmyadmin, me devuelve 3 registros, pero el mysql_num_rows me devuelve solo 2, por lo que la paginación no se hace correctamente.

He probado de hacer lo siguiente:

Código PHP:
$cadbusca="SELECT * FROM $bd.contacto WHERE nombre LIKE '%$busqueda%' OR apellidos LIKE '%$busqueda%' OR email_empresa LIKE '%$busqueda%' LIMIT $RegistrosAEmpezar, $RegistrosAMostrar";
$consulta mysql_query($cadbusca,$conexion) or die(mysql_error());
    
$cadfilas="SELECT count(*) FROM $bd.contacto WHERE nombre LIKE '%$busqueda%' OR apellidos LIKE '%$busqueda%' OR email_empresa LIKE '%$busqueda%'";
echo 
$cadfilas."<br>";
$consulta_filas mysql_query($cadbusca,$conexion) or die(mysql_error());
$filas mysql_num_rows($consulta_filas); 
Es decir, hacer una consulta a parte solo para contar las filas, pero esta me sigue devolviendo solo 2 registros.

El caso es que si la variable $RegistrosAMostrar la pongo a 3, es decir:
Código PHP:
$RegistrosAMostrar=3
Esta me devuelve los 3 registros que encuentra, tal y como debe ser.

Alguien me puede hechar un cable a ver si consigo que el mysql_num_rows me encuentre los datos reales, y no los que contiene la variable $RegistrosAMostrar??

Gracias forosdelweberos
  #2 (permalink)  
Antiguo 26/03/2011, 05:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con buscador

Funcion equivocada y Foro equivocado.
1) La función que necesitas usar no es mysql_num_rows, sino mysql_affected_rows()

2) Eso no es tema de bases de datos sino de programación en PHP. Deberías consultarlo en el Foro respectivo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/03/2011, 08:04
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Problema con buscador

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Funcion equivocada y Foro equivocado.
1) La función que necesitas usar no es mysql_num_rows, sino [URL="http://ar.php.net/manual/es/function.mysql-affected-rows.php"]mysql_affected_rows()[/URL]
Gracias por la respuesta. No conocía esta funciona pero la he probado y me sigue saliendo lo mismo en el resultado. Alguna otra opcion??

Cita:
2) Eso no es tema de bases de datos sino de programación en PHP. Deberías consultarlo en el Foro respectivo.
lo siento, pensaba que al tratarse de una consulta iria en este foro, podeis moverlo si lo creeis oportuno.
  #4 (permalink)  
Antiguo 26/03/2011, 08:07
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Problema con buscador

Lo siento, me equivocado y en vez de editar he respondido...
  #5 (permalink)  
Antiguo 26/03/2011, 09:22
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Problema con buscador

Vale, al final lo he solucionado de la siguiente manera por si a alguien le interesa:

Código PHP:
Ver original
  1. //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
  2. $cadbusca="SELECT * FROM $bd.contacto WHERE nombre LIKE '%$busqueda%' OR apellidos LIKE '%$busqueda%' OR email_empresa LIKE '%$busqueda%' LIMIT $RegistrosAEmpezar, $RegistrosAMostrar";
  3. $consulta = mysql_query($cadbusca,$conexion) or die(mysql_error());
  4. //$filas = mysql_num_rows($consulta);
  5. $cadfilas="SELECT count(*) FROM $bd.contacto WHERE nombre LIKE '%$busqueda%' OR apellidos LIKE '%$busqueda%' OR email_empresa LIKE '%$busqueda%'";
  6. echo $cadfilas."<br>";
  7. $consulta_filas = mysql_query($cadfilas,$conexion) or die(mysql_error());
  8. $f = mysql_fetch_array($consulta_filas);
  9. $filas = $f[0];

Es decir, he hecho una consulta a parte con un COUNT(*) que te devuelve los resultados, y lo he aprovechado para que te de las filas.

Gracias a gnzsoloyo por tu respuesta ;)
  #6 (permalink)  
Antiguo 26/03/2011, 10:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con buscador

De repente, mirando con cuidado tu sentencia original, me asaltó una duda: Si $RegistrosAMostrar la pones en 2, ¿qué valor le estás asignando a $RegistrosAEmpezar, 1 ó 0?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 26/03/2011, 10:34
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Problema con buscador

Inicialmente le pongo 0, en las siguientes páginas depende de la página anterior:

Código PHP:
Ver original
  1. $RegistrosAMostrar=10;
  2.  
  3. //estos valores los recibo por GET
  4. if(isset($_GET['pag'])){
  5.     $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  6.     $PagAct=$_GET['pag'];
  7. //caso contrario los iniciamos
  8. }else{
  9.     $RegistrosAEmpezar=0;
  10.     $PagAct=1;
  11.    
  12. }

Funciona porque lo tengo en otras páginas y funciona correctamente, pero en esta consulta me daba problemas.

Etiquetas: buscadores, bases-de-datos
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 16:28.