Foros del Web » Programando para Internet » PHP »

Paginator (jpinedo) en buscador

Estas en el tema de Paginator (jpinedo) en buscador en el foro de PHP en Foros del Web. Hola a todos... He incorporado el paginator de J. Pinedo a un buscador, pero cuando los resultados son en 2 o más páginas y quiero ...
  #1 (permalink)  
Antiguo 04/01/2008, 14:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Paginator (jpinedo) en buscador

Hola a todos...

He incorporado el paginator de J. Pinedo a un buscador, pero cuando los resultados son en 2 o más páginas y quiero pasar a ellas para verlas, no me los muestra.

En la primer página todo bien... pero no puedo ver las siguientes y no tengo posibilidad de solucionarlo si no es con mucha ayuda!!!

Les dejjó el código de mi buscador para ver si me pueden ayudar...

Desde ya muchas gracias y Salu2.-

Código:
<div class="buscador">
<form style="margin:0px;" action="buscador.php" method="post">
<input name="Nombre"/>
<input type="submit" name="buscador" value="Buscar"/>
</form><br />
</div>

<?php
if ($_POST['buscador'])
{
// Tomamos el valor ingresado
$buscar = $_POST['Nombre'];

// Si está vacío, lo informamos, sino realizamos la búsqueda
if(empty($buscar))
{
echo "No se ha ingresado Nombre o Apellido";
}else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("localhost","root","contraseña");
$_pagi_sql = "SELECT
Apellido,
Nombre,
DATE_FORMAT(Nacimiento,'%d-%m-%Y')AS Nacimiento,
DATE_FORMAT(Fallecimiento,'%d-%m-%Y')AS Fallecimiento,
(YEAR(fallecimiento) - YEAR(nacimiento)) - (RIGHT(fallecimiento,5) < RIGHT(nacimiento,5)) AS Edadfallece,
(YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,0) < RIGHT(Fallecimiento,0)) AS Tiempofallece,
(YEAR(CURRENT_DATE) - YEAR(nacimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(nacimiento,5)) AS Edadhoy,
Url
FROM listape WHERE Apellido like '%$buscar%' OR Nombre like '%$buscar%' ORDER BY apellido,nombre ASC";
mysql_select_db("NombreBD", $con);

//cantidad de resultados por página (opcional, por defecto 20)
          $_pagi_cuantos = 20;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
          include("../../estilo/paginator.inc.php");

$result = mysql_query($_pagi_sql, $con);

if (!$result) {
echo mysql_error();
}

// Tomamos el total de los resultados
$total = mysql_num_rows($result);
// Imprimimos los resultados
if ($total >= 1){
echo "Usted buscó: $buscar";
do {
?>

<table class="listape" summary="Tabla pagina Lista Apellidos">

          <caption>Listado de la Búsqueda</caption>

          <thead>
          <tr>
			    <th>APELLIDO</th>
          <th>NOMBRE</th>
          <th>NACE</th>
          <th>FALLECE</th>
          <th>EDAD</th>
          <th>AÑOS</th>
          <th>EDAD HOY</th>
          <th>Info</th>
		      </tr>
	        </thead>

          <tbody>

<?php
   //Leemos y escribimos los registros de la página actual
          while($row = mysql_fetch_array($_pagi_result)){
          printf("
          <tr>
			    <th>%s</th>
			    <td>%s</td>
			    <td>%s</td>
			    <td>%s</td>
          <td>%s</td>
          <td>%s</td>
          <td>%s</td>
			    <td>%s</td>
		      </tr>
      ", $row["Apellido"],$row["Nombre"],$row["Nacimiento"],$row["Fallecimiento"],$row["Edadfallece"],$row["Tiempofallece"],$row["Edadhoy"],$row["Url"]);
   }
   mysql_free_result($result);
   mysql_close($link);
?>

</tbody>
</table>

<?php
} while ($row = mysql_fetch_array($result));
echo "Resultados: $total";
} else {
// En caso de no encontrar resultados
echo "No se encontraron resultados para: $buscar";
}
}
}
?>

<div class="paginator">
<?php
//Incluimos la barra de navegación
          echo"".$_pagi_navegacion."";
?>
          </div>
  #2 (permalink)  
Antiguo 04/01/2008, 14:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Paginator (jpinedo) en buscador

Hay una variable que se llama $_pagi_propagar, no recuerdo exactamente el nombre, pero ve la documentacion. Esta variable se utiliza para propagar variables extras, en tu caso debes de propagar tus palabras de busqueda.

Saludos.
  #3 (permalink)  
Antiguo 04/01/2008, 15:33
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Paginator (jpinedo) en buscador

Hola...

Según la documentacion:

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET

Por favor, en mi caso, como sería para implementar el $_pagi_propagar, es decir, un ejemplo me orientaría mucho.

Disculpas pero me es dificil, no tengo mucha habilidad!!!

Gracias.-
  #4 (permalink)  
Antiguo 06/01/2008, 14:07
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Paginator (jpinedo) en buscador

Hola paulkees.... algunas observaciones:


- Paginator propaga las variables por url, o sea, la primera vez $nombre llegará por POST, pero cuando sigas enlaces de paginator las propagará por GET.
- $result = mysql_query($_pagi_sql, $con); es totalmente innecesario, ya que paginator lo hace automáticamente.
- Si quieres saber si hay resultados o no, utiliza la variable $_pagi_totalReg que contienen precisamente el total de registros devueltos por la consulta.
Código PHP:
<div class="buscador">
<form style="margin:0px;" action="buscador.php" method="post">
    <input name="nombre"/>
    <input type="submit" name="buscador" value="Buscar"/>
</form><br />
</div>

<?php
if ( isset( $_REQUEST['nombre']) )
{
    
// Tomamos el valor ingresado
    
$nombre trim$_REQUEST['nombre'] );
}

// Si está vacío, lo informamos, si no, realizamos la búsqueda
if(empty($nombre))
{
    echo 
"No se ha ingresado Nombre o Apellido";
}else{
    
// Conexión a la base de datos y seleccion de registros
    
$con mysql_connect("localhost","root","contraseña");
    
mysql_select_db("NombreBD"$con);

    
$_pagi_sql "SELECT
    Apellido,
    Nombre,
    DATE_FORMAT(Nacimiento,'%d-%m-%Y')AS Nacimiento,
    DATE_FORMAT(Fallecimiento,'%d-%m-%Y')AS Fallecimiento,
    (YEAR(fallecimiento) - YEAR(nacimiento)) - (RIGHT(fallecimiento,5) < RIGHT(nacimiento,5)) AS Edadfallece,
    (YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,0) < RIGHT(Fallecimiento,0)) AS Tiempofallece,
    (YEAR(CURRENT_DATE) - YEAR(nacimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(nacimiento,5)) AS Edadhoy,
    Url
    FROM listape WHERE Apellido like '%$nombre%' OR Nombre like '%$nombre%' ORDER BY apellido,nombre ASC"
;
    

    
//cantidad de resultados por página (opcional, por defecto 20)
    
$_pagi_cuantos 20;

    
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
    
include("../../estilo/paginator.inc.php");

    
//Propagamos la variable $nombre
    
$_pagi_propagar = array('nombre');

    
// Tomamos el total de los resultados
    // Imprimimos los resultados
    
if ( $_pagi_totalReg >= )
    {
        echo 
"Usted buscó: $nombre";
    
?>

    <table class="listape" summary="Tabla pagina Lista Apellidos">
        <caption>Listado de la Búsqueda</caption>
        <thead>
        <tr>
            <th>APELLIDO</th>
            <th>NOMBRE</th>
            <th>NACE</th>
            <th>FALLECE</th>
            <th>EDAD</th>
            <th>AÑOS</th>
            <th>EDAD HOY</th>
            <th>Info</th>
        </tr>
        </thead>
        <tbody>

    <?php
    
//Leemos y escribimos los registros de la página actual
    
while($row mysql_fetch_array($_pagi_result))
    {
        
printf("
        <tr>
            <th>%s</th>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
        </tr>
              "

        
$row["Apellido"],
        
$row["Nombre"],
        
$row["Nacimiento"],
        
$row["Fallecimiento"],
        
$row["Edadfallece"],
        
$row["Tiempofallece"],
        
$row["Edadhoy"],
        
$row["Url"]
        );
       }
       
mysql_free_result($_pagi_result);
       
mysql_close($link);
    
?>
        </tbody>
    </table>

    <?php
    
echo"Mostrando resultados ".$_pagi_info;
    
?>
    <div class="paginator">
    <?php
    
//Incluimos la barra de navegación
    
echo"".$_pagi_navegacion."";
    
?>
    </div>
    <?php
    
} else {
        
// En caso de no encontrar resultados
        
echo "No se encontraron resultados para: $nombre";
    }
}
?>
Un abrazo
  #5 (permalink)  
Antiguo 06/01/2008, 17:26
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Re: Paginator (jpinedo) en buscador

Hola jpinedo...!!!

No te imaginas cuanta alegría me dio tu respuesta, realmente estoy muy contento de que me funcione y pueda usar el paginator!!! en el buscador.

Aunque al principio me llevé un susto grande... probé el script tal cual lo modificaste y oh sorpresa!, seguía sin funcionar, es decir, sin poder ver las siguientes páginas.

Resulta que el inconveniente estaba en que al Formulario hay que cambiarle el method:POST por el method:GET

Esta pequeñéz la resalto por si algún novatísimo como yo, toma este ejemplo y se encuentra con una desilusión mayúscula!!!

Bueno jpinedo, es un gusto usar el estupendo paginator, nuevamente muchas gracias por tu tiempo y paciencia. Que tengas un muy buen año, sobre todo con mucha tranquilidad interior.

paulkees.-
  #6 (permalink)  
Antiguo 14/01/2008, 17:08
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Paginator (jpinedo) en buscador

Hola a todos.

Estoy teneniendo un problema similar con el paginator y mi buscador.

En algunas paginas del sitio tengo un form asi:
Código HTML:
<form name="buscador" id="buscador" method="post" action="resultados.php">
<font class="formulario">Buscar por nombre</font>&nbsp;
<input name="palabra" id="palabra" type="text" size="30">
<input name="submit" type="submit" value="Consultar">
</form> 
La pagina resultados.php tiene un include asi:
Código PHP:
<? include ("buscador.php"); ?>
El codigo buscador es este:
Código PHP:
<?
include ("connect.php");

if (isset( 
$_POST['palabra'])){

$buscar $_POST['palabra'];

if(empty(
$buscar)){

echo 
"<p class='copy'>No se ha ingresado ningún criterio de búsqueda<br>";
echo 
"Por favor, escriba al menos parte del nombre.</p>";
}

else {

$_pagi_sql "SELECT * FROM clientes WHERE nombre like '%$buscar%' ORDER BY nombre";
// $result = mysql_query($sql) or die (mysql_error());

$_pagi_cuantos 5;
$_pagi_nav_num_enlaces 5;
$_pagi_nav_estilo "copyright";

include(
"paginator.inc.php");

$registros mysql_num_rows($_pagi_result);

if(
$registros<=0){ 

echo 
"<p class='copy'>No se encontraron resultados relacionados con su consulta</p><br><br>";
}
else

echo 
"<p class='copy'>Se encontraron ".$_pagi_totalReg." resultados para su consulta<br>Los resultados son distribuidos en ".$_pagi_totalPags." páginas<br><br><br>...&nbsp;::&nbsp;...</p>";

while(
$row mysql_fetch_array($_pagi_result)){

echo 
"<br><br><font class='nombre_cliente'>".$row[nombre]."</font><br>";
echo 
"".$row[descripcion]."<br><br>";
echo 
"Ubicaci&oacute;n: ".$row[zona]."<br><br>";
echo 
"Direcci&oacute;n: ".$row[direccion]."";
if (!empty(
$row[telefono_dos])){
echo 
"<br>Tel&eacute;fonos: ".$row[telefono_uno]."&nbsp";
echo 
"- ".$row[telefono_dos]."";
}
else
echo 
"<br>Tel&eacute;fono: ".$row[telefono_uno]."";
echo 
"<br>Celular: ".$row[celular]."";
if (!empty(
$row[email_dos])){
echo 
"<br>e-Mail: <a href='mailto:".$row[email_uno]."' class='result'>".$row[email_uno]."</a>&nbsp";
echo 
"- <a href='mailto:".$row[email_dos]."' class='result'>".$row[email_dos]."</a>";
}
else
echo 
"<br>e-Mail: <a href='mailto:".$row[email_uno]."' class='result'>".$row[email_uno]."</a>";
if (!empty(
$row[url])){
echo 
"<br>Sitio Web: <a href=".$row[url]." target=_blank class='result'>".$row[url]."</a>";
}
if (!empty(
$row[subcategoria])){
echo 
"<br><br>Categor&iacute;a: <a href='consult_cat.php?cat=$row[categoria]' class='cat'>".$row[categoria]."</a>&nbsp";
echo 
"(<a href='consult_subcat.php?subcat=$row[subcategoria]' class='cat'>".$row[subcategoria]."</a>)<br><br><br>";
}
else
echo 
"<br><br>Categor&iacute;a: <a href='consult_cat.php?cat=$row[categoria]' class='cat'>".$row[categoria]."</a><br><br><br>";
echo 
"<hr noshade='noshade' color='#C5C5C5' size='1'>";
}
}
echo
"<p class='copy'>".$_pagi_navegacion."</p>";
}
?>
En todos los aspectos funciona de perlas, ya lo he probado mil veces (con resultados, vacio, con palabras que no existen, etc) solo que si hay mas de una pagina, no me muestra nada en la segunda pagina como a Paulkees.

Incluso si pongo el propagador no me funciona, tipo asi:
Código PHP:
$_pagi_propagar = array('palabra','buscar'); 
Ni con comillas simples, dobles, solo palabra, solo buscar.. nada.

Si pongo el form en get no me muestra nada ni en la primera pagina.

Sera porque el form no esta en la misma pagina?

Alguna ayuda???

Gracias
  #7 (permalink)  
Antiguo 14/01/2008, 20:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Paginator (jpinedo) en buscador

Si te fijas el paginador pasa las variables via GET, entonces debes de hacerlo asi:
Código PHP:
if (isset( $_REQUEST['palabra'])){

$buscar $_REQUEST['palabra']; 
Saludos.
  #8 (permalink)  
Antiguo 14/01/2008, 20:25
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Paginator (jpinedo) en buscador

Gracias GatorV

pero no, igual me muestra la segunda página en blanco, es decir, sin resultados.

Otro detalle, cuando entras cualquier texto en el buscador y le das a ENTER en el teclado, pasa lo mismo, no muestra nada aunque existan resultados; es como si el enter no procesara el formulario
  #9 (permalink)  
Antiguo 14/01/2008, 21:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Paginator (jpinedo) en buscador

Probaste lo que te comente y aparte usando la propagacion? Te haz fijado si cuando haces click en los enlaces te sale en tu URL el numero de pagina Y la palabra a propagar?.

Saludos.
  #10 (permalink)  
Antiguo 14/01/2008, 21:18
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
De acuerdo Re: Paginator (jpinedo) en buscador

Hola:
Fíjense en este post:
http://www.forosdelweb.com/f18/paginator-con-2-consultas-547854/

Allí muestro cómo guardar la búsqueda en una sesion y a otra cosa mariposa.
Saludos
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 08:42.