Foros del Web » Programando para Internet » PHP »

Buscador creado, problemas de paginacion

Estas en el tema de Buscador creado, problemas de paginacion en el foro de PHP en Foros del Web. Hola amigos. Estoy creando un buscador, ya tengo los registros del sitio y la paginacion creada. Cuando cambie la oración: Cita: $query = "SELECT * ...
  #1 (permalink)  
Antiguo 27/11/2009, 19:45
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Buscador creado, problemas de paginacion

Hola amigos. Estoy creando un buscador, ya tengo los registros del sitio y la paginacion creada. Cuando cambie la oración:
Cita:
$query = "SELECT * from rank WHERE ORDER BY votos DESC, nombre ASC $limit";
(aqui selecciona todos los registros y los ordena por votos (de mayor a menor) y por nombre (de mayor a menor)

Por esta otra:

Cita:
$query = "SELECT * from rank WHERE MATCH (nombre,descripcion) AGAINST ('".$busqueda."' IN BOOLEAN MODE) ORDER BY votos DESC, nombre ASC $limit";
Me tira los registros bien, pero cuando aprieto "2" (de la paginacion, o sea la pagina siguiente), no me tira ningun registro, o sea, me vacía la página
He estado como loco 2 días, pero nada, no hay caso.
Por ejemplo busco "música" y me tira en la página 5 registros y 3 páginas en total, hago click en las páginas 2 o 3 y se borran todos los registros, como que no sigue tomando de la base de datos. Bueno, espero que me den una manito.
Gracias!

PD: Aca agrego un poco mas de código (el de la paginacion, por lo menos el de las variables), para que vean como puedo salir de este embrollo...

Cita:
$busqueda=$_POST["buscartexto"];
$query = "SELECT count(id) AS Total from rank WHERE MATCH (nombre,descripcion) AGAINST ('".$busqueda."' IN BOOLEAN MODE)";
$row2=mysql_fetch_assoc(mysql_query($query));
$total_records = $row2['Total'];
$records_per_page = 5;
$total_pages = ceil($total_records / $records_per_page);
$page = intval($_GET["p"]);
if ($page < 1 || $page > $total_pages) $page = 1;
$offset = ($page - 1) * $records_per_page;
$limit = " LIMIT $offset, $records_per_page";
$query = "SELECT * FROM rank WHERE MATCH (nombre,descripcion) AGAINST ('".$busqueda."' IN BOOLEAN MODE) ORDER BY votos DESC, nombre ASC $limit";
$resultado = mysql_query($query);
while ($row = mysql_fetch_assoc($resultado))
{
..... CONTINUACION DEL CODIGO

Última edición por principiantedelweb; 27/11/2009 a las 19:51 Razón: Poner mas codigo
  #2 (permalink)  
Antiguo 27/11/2009, 20:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Buscador creado, problemas de paginacion

Posiblemente la consulta te esta dando un error al tratar de leer la siguiente pagina, para descartar agrega al final lo que esta en azul:

$resultado = mysql_query($query) or die(mysql_error());
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/11/2009, 20:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Buscador creado, problemas de paginacion

Gracias por contestar, y mirando la hora, más gracias. Bueno Triby, no me ha dado error al agregar die. Sigue igual.
La paginacion es Inicio 1 2 3 4 5 ... Siguiente Fin
Cuando pongo la pagina 2, solo aparece:
Inicio Fin
Por lo que parece, no sigue paginando.
Pero si cambio por esto:
Cita:
$query = "SELECT * from rank WHERE ORDER BY votos DESC, nombre ASC $limit";
Pagina normalmente
  #4 (permalink)  
Antiguo 27/11/2009, 20:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Buscador creado, problemas de paginacion

Ok, entonces revisa la sintaxis para MATCH AGAINST, tengo entendido que se usa tanto en la parte del SELECT como en la parte del WHERE, es decir, dos veces en la mismca consulta.

Ejemplo tomado del manual de MySQL:
Código sql:
Ver original
  1. SELECT MATCH('Content') AGAINST ('keyword1 keyword2') AS Relevance
  2. FROM TABLE WHERE MATCH ('Content') AGAINST('+keyword1 +keyword2' IN BOOLEAN MODE)
  3. HAVING Relevance > 0.2
  4. ORDER BY Relevance DESC
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 27/11/2009, 21:06
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Buscador creado, problemas de paginacion

No pude solucionarlo. Mirá, cambie el primer query por (el que va por defecto)
Cita:
$query = "SELECT count(id) AS Total from rank";
Mientras que en el segundo query puse:

Cita:
$query = "SELECT *, MATCH (nombre, descripcion) AGAINST ('".$busqueda."' IN BOOLEAN MODE) AS votos FROM rank WHERE MATCH (nombre,descripcion) AGAINST ('".$busqueda."' IN BOOLEAN MODE) ORDER BY votos DESC $limit";
Nada. Al poner el primer query que me tome todos los registros, salen, logicamente, todas las paginas de a 5 registros por pagina (como dice en el código de más arriba). Pero presiono en la pagina 2 o cualquiera de las que siguen y se borra todo. Solo salen los primeros 5 registros. Si pongo que salgan 10, salen 10 y si pongo 50 por pagina, salen 50, pero cuando paso a las siguientes paginas, nada.
Le saqué el "AS votos" por si acaso, nada, sigue igual.
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 02:23.