Foros del Web » Programando para Internet » PHP »

Buscador con PHPPaging

Estas en el tema de Buscador con PHPPaging en el foro de PHP en Foros del Web. Existe en los foros el aporte de un buscador sencillo mas abajo encontre con el paginador de Okam bien hice esto @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: ...
  #1 (permalink)  
Antiguo 24/03/2009, 10:29
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación Buscador con PHPPaging

Existe en los foros el aporte de un buscador sencillo mas abajo encontre con el paginador de Okam bien hice esto
Código php:
Ver original
  1. <?php include('PHPPaging.lib.php'); ?>
  2. <form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
  3. Buscar: <input type="text" size="50″ value="<?php echo $_GET['frase']; ?>" name="frase" />
  4. <input type="submit" name="buscar" value="Buscar" />
  5. </form>
  6. <?php
  7. // conectar al servidor
  8. $server_link = mysql_connect("localhost", "root", "");
  9. if(!$server_link){
  10.     die("Fallo la conexion". mysql_error());
  11. }
  12. // seleccionamos la base de datos
  13. $db_selected = mysql_select_db("prueba", $server_link);
  14. if(!$db_selected){
  15.     die("No se pudo seleccionar la Base de Datos ". mysql_error());
  16. }
  17. // varificamos que el formulario halla sido enviado
  18. if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
  19.     $frase = addslashes($_GET['frase']);
  20.     // Instanciamos el objeto
  21.     $paging = new PHPPaging;
  22.     // Poniendo 20 resultados por página
  23.     $paging->porPagina(10);
  24.     // Estableciendo las páginas adyacentes
  25.     $paging->paginasAntes(4, 10, 20);
  26.     $paging->paginasDespues(4, 10, 20);  
  27.     // Cambiando el texto de la referencia a la página actual
  28.     $paging->mostrarActual("<span class=\"navthis\">{n}</span>");
  29.    
  30.    
  31.     // hacemos la consulta de busqueda
  32.     $paging->agregarConsulta("SELECT noticiaTitulo, noticiaNoticia,
  33.                              MATCH (noticiaTitulo, noticiaNoticia)
  34.                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  35.                              FROM noticias
  36.                              WHERE MATCH (noticiaTitulo, noticiaNoticia)
  37.                              AGAINST ('$frase' IN BOOLEAN MODE)
  38.                              ORDER BY coincidencias DESC", $server_link)
  39.                               or die(mysql_error());
  40.     // aca otros cambios, con la funcion ejecutar mostramos todo
  41.        $paging->ejecutar();                                                    
  42.      // y  luego mostramos los resultados con un pequeño cambio al while
  43.         while($row = $paging->fetchResultado()) {
  44.         echo "<strong><a href='#'>$row[noticiaTitulo]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  45. echo "<p>".substr(strip_tags($row['noticiaNoticia']), 0, 255)."...</p>";
  46.  
  47. ?>
  48. <?php }} ?>
  49. <?php
  50.      // acá nos muestra la cantidad de resultados encontrados, el numero de paginas, etc
  51. echo "<b><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Página ".$paging->numEstaPagina()." de ".$paging->numTotalPaginas()."</SPAN></b><br />";
  52.     echo "<SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Mostrando ".$paging->numRegistrosMostrados()." resultados, del ".$paging->numPrimerRegistro()." al ".$paging->numUltimoRegistro();
  53.     echo " de un total de ".$paging->numTotalRegistros()."</SPAN><br />";
  54.     // Comienza la barra de navegacion, la mostramos
  55.     echo "<b><div id=\"siteInfo12\"><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:#9B0000;font-weight:bold\">Navegación: ".$paging->fetchNavegacion()."</SPAN></div></b>";
  56.      // y listo!
  57.    
  58. ?>

Fatal error: Call to a member function numEstaPagina() on a non-object in C:\xampp\htdocs\repasos\consultas\buscar.php on line 51

Me fije y todo anda bien funciona pero me aparece este error y ademas fatal no entiendo pq?
  #2 (permalink)  
Antiguo 24/03/2009, 11:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscador con PHPPaging

estas llamándolo fuera del bloque donde declaras new PHPPaging

osea, que aun sin datos en $_GET "crees" poder usarlo fuera....


espero comprendas, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/03/2009, 14:34
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Ahora si necesito su ayuda intente hacer esto
Este es mi buscador:

Código html:
Ver original
  1. <form action="proceso_busqueda.php" method="get">
  2.    <table  border="1" align="center" width="400">
  3.   <tr>
  4.     <th colspan="2">Buscador de Informacion *** ACHF *** </th>
  5.   </tr>
  6.   <tr>
  7.     <td><input type="text" name="buscar" size="50" value="<?php echo  $_GET['frase']; ?>"></td>
  8.     <td><input type="submit" name="Buscar" value="Buscar"></td>
  9.   </tr>
  10.  
  11.  
  12. </form>
  13. </body>

Y este es mi proceso_busuqeda.php
Código php:
Ver original
  1. <?php
  2. include('PHPPaging.lib.php');
  3.     // conectar al servidor
  4.     $server_link = mysql_connect("localhost", "root", "");
  5.     if(!$server_link){
  6.         die("Fallo la conexion". mysql_error());
  7.     }
  8.     // seleccionamos la base de datos
  9.     $db_selected = mysql_select_db("prueba", $server_link);
  10.     if(!$db_selected){
  11.         die("No se pudo seleccionar la Base de Datos ". mysql_error());
  12.     }
  13.     // varificamos que el formulario halla sido enviado
  14.     if(isset($_GET['Buscar']) && $_GET['Buscar'] == 'Buscar'){
  15.     $frase = addslashes($_GET['frase']);
  16.            
  17.     // Instanciamos el objeto
  18.        $paging = new PHPPaging;
  19.        $paging->porPagina(20);
  20.        $paging->paginasAntes(4, 10, 20);
  21.        $paging->paginasDespues(4, 10, 20);  
  22.        $paging->mostrarActual("<span class=\"navthis\">{n}</span>");
  23.        $paging->agregarConsulta("SELECT noticiaTitulo, noticiaNoticia,
  24.                              MATCH (noticiaTitulo, noticiaNoticia)
  25.                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  26.                              FROM noticias
  27.                              WHERE MATCH (noticiaTitulo, noticiaNoticia)
  28.                              AGAINST ('$frase' IN BOOLEAN MODE)
  29.                              ORDER BY cocincidencias ASC", $server_link);            
  30.    
  31.         $paging->ejecutar();
  32.        
  33.           while($row = $paging->fetchResultado()) {
  34.         echo "<strong><a href='#'>$row[noticiaTitulo]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  35. echo "<p>".substr(strip_tags($row['noticiaNoticia']), 0, 255)."...</p>";
  36.  
  37. ?>
  38. <?php }} ?>
  39. <?php
  40.      // acá nos muestra la cantidad de resultados encontrados, el numero de paginas, etc
  41. echo "<b><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Página ".$paging->numEstaPagina()." de ".$paging->numTotalPaginas()."</SPAN></b><br />";
  42.     echo "<SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Mostrando ".$paging->numRegistrosMostrados()." resultados, del ".$paging->numPrimerRegistro()." al ".$paging->numUltimoRegistro();
  43.     echo " de un total de ".$paging->numTotalRegistros()."</SPAN><br />";
  44.     // Comienza la barra de navegacion, la mostramos
  45.     echo "<b><div id=\"siteInfo12\"><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:#9B0000;font-weight:bold\">Navegación: ".$paging->fetchNavegacion()."</SPAN></div></b>";
  46.      // y listo!
  47.    
  48. ?>
El problema que tengo es que cuando un titulo para buscar me vota el siguiente mensaje

PHPPaging - Error

Hubo un error al intentar ejecutar la paginación de los resultados. Por favor, comuníquese con el responsable de este sitio
PHPPaging v2.1 (20081114)

No se como puedo solucionar esto

Realice esta modificacion pero lo malo es que todavia me vota el sgte mensaje ::
PHPPaging - Error
Hubo un error al intentar ejecutar la paginación de los resultados. Por favor, comuníquese con el responsable de este sitio

No creo que sea la clase PHPPaging.lib.php

Esta es mi modificacion ya no tengo el problema de Fatal error
Código php:
Ver original
  1. <?php require_once 'PHPPaging.lib.php'; ?>
  2. <form name="buscar" action="buscar.php" method="get">
  3. Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
  4. <input type="submit" name="buscar" value="Buscar" />
  5. </form>
  6. <?php
  7. // conectar al servidor
  8.         $server_link = mysql_connect("localhost", "root", "");
  9.         if(!$server_link){ die("Fallo de conexion ". mysql_error());
  10.         }
  11.         // seleccionamos la base de datos
  12.         $db_selected = mysql_select_db("prueba", $server_link);
  13.         if(!$db_selected){ die("No se pudo seleccionar la Base de Datos ". mysql_error());
  14.         }
  15.         // varificamos que el formulario halla sido enviado
  16.         if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
  17.                 $frase = addslashes($_GET['frase']);
  18.  
  19.                 // Instanciamos el objeto
  20.                 $paging = new PHPPaging;
  21.    
  22.                 // Poniendo 20 resultados por página
  23.                 $paging->porPagina(10);
  24.    
  25.                 // Estableciendo las páginas adyacentes
  26.                 $paging->paginasAntes(4, 10, 20);
  27.                 $paging->paginasDespues(4, 10, 20);  
  28.                
  29.                 // Cambiando el texto de la referencia a la página actual
  30.                 $paging->mostrarActual("<span class=\"navthis\">{n}</span>");
  31.    
  32.                 // Indicamos la consulta al objeto
  33.                 // hacemos la consulta de busqueda
  34.                 // acá van las modificaciones, se elimina $sqlBuscar, $totalRows y el if por esto
  35.    
  36.                 $paging->agregarConsulta("SELECT noticiaTitulo, noticiaNoticia,
  37.                              MATCH (noticiaTitulo, noticiaNoticia)
  38.                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  39.                              FROM noticias
  40.                              WHERE MATCH (noticiaTitulo, noticiaNoticia)
  41.                              AGAINST ('$frase' IN BOOLEAN MODE)
  42.                              ORDER BY cocincidencias ASC", $server_link);            
  43.    
  44.                 // aca otros cambios, con la funcion ejecutar mostramos todo
  45.                 $paging->ejecutar();
  46.        
  47.                 // y  luego mostramos los resultados con un pequeño cambio al while
  48.                 while($row = $paging->fetchResultado()) {
  49.                     echo "<strong><a href='#'>$row[noticiaTitulo]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  50.                     echo "<p>".substr(strip_tags($row['noticiaNoticia']), 0, 255)."...</p>";
  51.                 }  
  52.                
  53.                 // acá nos muestra la cantidad de resultados encontrados, el numero de paginas, etc
  54.                     echo "<b><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Página ".$paging->numEstaPagina()." de ".$paging->numTotalPaginas()."</SPAN></b><br />";
  55.                     echo "<SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:black;font-weight:bold\">Mostrando ".$paging->numRegistrosMostrados()." resultados, del ".$paging->numPrimerRegistro()." al ".$paging->numUltimoRegistro();
  56.                     echo " de un total de ".$paging->numTotalRegistros()."</SPAN><br />";
  57.                 // Comienza la barra de navegacion, la mostramos
  58.                     echo "<b><div id=\"siteInfo12\"><SPAN STYLE=\"font-size:11px;font-family:Tahoma;color:#9B0000;font-weight:bold\">Navegación: ".$paging->fetchNavegacion()."</SPAN></div></b>";
  59.                
  60.              
  61.         }
  62. ?>

Alguien por casualidad no a implementado un buscador con la la clase PHPPaging.lib.php

Última edición por GatorV; 24/03/2009 a las 23:51
  #4 (permalink)  
Antiguo 25/03/2009, 16:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador con PHPPaging

Coloca el paginador en modo de desarrollo para ver un mensaje de error más específico. A simple vista la configuración es la correcta, por lo tanto el problema puede estar en la consulta SQL. Para ver como realizar el cambio de modos entra aquí: http://scripts.phperu.net/paging/avanzado/modo/

Código php:
Ver original
  1. // Cambiar a modo de desarrollo
  2. $paging->modo('desarrollo');
Con esa opción, tendrás un mensaje de error más detallado. En este caso, dado que al parecer el error es la consulta SQL, se mostrará el mensaje devuelto por el servidor MySQL.

Haz el cambio (que debe ser provisional, mientras desarrollas el sistema) y pones aquí el mensaje de error mostrado.

Un saludo,
  #5 (permalink)  
Antiguo 14/05/2009, 17:41
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Buscador con PHPPaging

Hola amigo pateketrueke. Estoy implementando el sistema de paginación que creaste, para mi página, la cual tiene implementado AJAX.
Se trata de una página principal (index.php), que en el momento en que se da a un botón, carga otra página (noticias.php) en un DIV a través de AJAX. Sin paginación, la web funciona perfectamente, pero claro, a medida que metiera más artículos, la página se iría a alargar indefinidamente. Para ello, comencé a buscar código para hacer paginadores (estoy empezando con PHP y aún estoy verde).

Mi intención en principio era que noticias.php tuviera el control sobre la paginación de los artículos, independientemente de index, pero al darle a otra página me salía el error "No input file specified".

Esto me da a entender, y viendo además el URI, que PHPPaging está pensado por defecto para trabajar sobre la propia página principal (no a través de una segunda, en mi caso noticias.php. Corrígeme si me equivoco) y por tanto, el paso facil sería implementar la llamada al paginador y a las noticias desde el propio index.php, anulando ese noticias.php.

Pero me pareció que es sobrecargar la página principal y más aún si tengo la intención de agregar una galería de fotos (por tanto, otro paginador).
Por tanto, ¿cómo debería organizar la web para poder paginar todo, si se puede o no seguir la página tal cual la había planteado y si de esa manera, puedo emplear el PHPPaging?¿Mi ajax puede seguir siendo aprovechado? Un saludo y gracias de antemano.

P.D: Ojalá sea tan fácil como enviar datos a una funcion. ;)

Última edición por Ikesankom; 14/05/2009 a las 19:03
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:04.