Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/05/2005, 09:07
raml
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación Ayuda con Paginator 1.6

Hola, instalé el script Paginator 1.6 de Jpinedo para listar los resultados de un sistema de búsqueda de noticias por fecha (día, mes y/o año).

En su función de listar los resultados funciona perfecto pero al pasar las variables para recordar la búsqueda, tengo dos problemas:

Cita:
1. Cuando buscas por fecha, los resultados de inicio corresponden a la búsqueda pero al dar click en siguiente o en anterior, se cargan todas las noticias de la base de datos y se pierde la consulta inicial.

2. Al buscar por fecha arriba de los resultados aparece un menú de salto con la fecha que elegiste, para indicar a los usuarios de cuando son los resultados que buscaron. Pero de igual manera, aunque de inicio muestra la fecha correspondiente a la búsqueda, al dar click en siguiente o en anterior se desconfigura este calendario.
Cita:
Ejemplo de los 2 Problemas:

http://www.ideasenred.com.mx/duda/busqueda.php

Metánse a esa dirección y traten de buscar los resultados de Febrero del 2004 (sin eleigr el día). Deben de salir 7 resultados llamados Prueba 01 Febrero 2004, Prueba 02 Febrero 2004, ....etc). En un inicio aparecen y corresponden a la búsqueda, pero den click en siguiente y luego en anterior; y verán que tanto la búsqueda como el calendario de arriba se desconfiguran.
ALGUNAS DE LAS COSAS QUE HE INTENTADO PARA RESOLVERLO

En este foro y en la sección de comentarios de la página de Paginator 1.6 hay algunas sugerencias a problemas relacionados, pero no he logrado solucionarlo. Lo que he hecho es lo siguiente:

Cita:
a) Declarar las variables de la siguiente manera $_pagi_propagar = array('diaid', 'mesid', 'anoid');

b) Cambiar $_POST de estas variables por $GLOBALS

c) Cambiar las variables de $_POST a $_GET de la siguiente manera:

if(isset($_POST['variable'])){
$var= $_POST['variable'];
}else{
$var= $_GET['variable'];
}
EL CÓDIGO ES EL SIGUIENTE

Formulario de Búsqueda-----------


Código PHP:
<td height="96" align="center" valign="top" class="sangriaA5"><!-- Este el CALENDARIO de búsqueda -->
            <form method="POST" action="resultadosbusqueda.php">
              <p>
                <!-- Buscar por Día -->
                <select name="diaid">
                  <option value = "">----</option>
                  <?php 
              
while ($dia mysql_fetch_array($dias)) {
              
$diaid $dia['diaid'];
              echo 
"<option value='$diaid'>$diaid</option>\n";
              }
              
              
?>
                </select>
&nbsp;&nbsp;&nbsp;
                <!-- Buscar por Mes -->
                <select name="mesid">
                  <option value = "">----------------</option>
                  <?php 
              
while ($mes mysql_fetch_array($meses)) {
              
$mesid $mes['mesid'];
              
$mesnom $mes['mes1'];
              echo 
"<option value='$mesid'>$mesnom</option>\n";
              }
              
?>
                </select>
&nbsp;&nbsp;&nbsp;
                <!-- Buscar por Año -->
                <select name="anoid">
                  <option value = "">------</option>
                  <?php 
              
while ($ano mysql_fetch_array($anos)) {
              
$anoid $ano['anoid'];
              
$anonum $ano['ano'];
              echo 
"<option value='$anoid'>$anonum</option>\n";
              }
              
?>
                </select>
              </p>
              <p>
                <input name="submit" type="submit" id="submit" value="Buscar">
              </p>
            </form></td>
Código que procesa la búsqueda y pagina los resultados-----

Código PHP:
<?php 

// incluye archivos para conectarse a la Base de Datos

include('config/confbd.php');
include(
'config/conectarbd.php');
include(
'config/queries_prensa.php');
?>

<?php 

//CALENDARIO: Permite que la fecha utilizada para buscar la base de datos se siga viendo en el calendario de esta página. Ejemplo: si buscaste 26 Febrero 2005 en subpagina.php entonces una vez que los resultados se muestren en subpagina6busqueda.php, el calendario de esta página seguira mostrando 26 Febrero 2005. Lo mismo si sólo buscaste por mes y/o  año.
    
    
$diaid $_POST['diaid'];
    
$mesid $_POST['mesid'];
    
$anoid $_POST['anoid'];

    
    
$select1 ' SELECT diaid, mesid, anoid';
    
$from1   ' FROM dias, meses, anos';
    
$where1  ' WHERE 1=1';
    
    
$diaid $_POST['diaid'];
    if (
$diaid != '') { // An author is selected
      
$where1 .= " AND diaid = '$diaid'";
    }
    
    
$mes $_POST['mesid'];
    if (
$mesid != '') { // An author is selected
      
$where1 .= " AND mesid = '$mesid'";
    }
    
    
$ano $_POST['anoid'];
    if (
$anoid != '') { // An author is selected
      
$where1 .= " AND anoid = '$anoid'";
    }
    
    
$query = ($select1 $from1 $where1);
    
$result mysql_query($query) or die ("Error in query: $query. " mysql_error());
    
$row mysql_fetch_object($result);


// BUSQUEDA: Este script permite obtener la lista de noticias (por título) en la base de datos, a partir de la búsqueda por dia, mes y/o año realizada en subpagina.php

    
$select '    SELECT id, titulo';
    
$from   ' FROM p_documentos';
    
$where  ' WHERE 1=1';
    
$order  ' ORDER BY id_ano desc, id_mes desc, id_dia desc';

    
    
$dia $_POST['diaid'];
    if (
$dia != '') { // An author is selected
      
$where .= " AND id_dia='$dia'";
    }
    
    
$mes $_POST['mesid'];
    if (
$mes != '') { // An author is selected
      
$where .= " AND id_mes='$mes'";
    }
    
    
$ano $_POST['anoid'];
    if (
$ano != '') { // An author is selected
      
$where .= " AND id_ano='$ano'";
    }

?>
<tr>
        <td height="34" align="center" valign="top" class="sangriaA5">
        
        <!-- Este es el calendario -->
        
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
              <select name="diaid">
                <option value = "">----</option>
                <?php 
                      
while ($dia mysql_fetch_object($dias)) {
                      if (
$diaid != '') {
                          if (
$dia->diaid == $row->diaid) {
                                      echo 
"<option selected='selected' value='$dia->diaid'>$dia->diaid</option>\n";
                                      
                
//Quita esta parte si sólo quieres ver el DIA utilizado para buscar la base de datos (cuidado con el } final)
                
                                    
} else {
                                      echo 
"<option value='$dia->diaid'>$dia->diaid</option>\n";
                                           }
                                                                    }
                                                                        }
              
?>
            </select>
        &nbsp;&nbsp;&nbsp;
              <select name="mesid">
                <option value = "">----------------</option>
                <?php 
                      
while ($mes mysql_fetch_object($meses)) {
                      if (
$mesid != '') {
                        if (
$mes->mesid == $row->mesid) {
                                echo 
"<option selected='selected' value='$mes->mesid'>$mes->mes1</option>\n";
                                
                
//Quita esta parte si sólo quieres ver el MES utilizado para buscar la base de datos (cuidado con el } final)
                
                                
} else {
                                 echo 
"<option value='$mes->mesid'>$mes->mes1</option>\n";
                                       }
                                                                   }
                                                                           }
              
?>
            </select>
&nbsp;&nbsp;&nbsp;      
      <select name="anoid">
                <option value = "">------</option>
                <?php 
                      
while ($ano mysql_fetch_object($anos)) {
                      if (
$anoid != '') {
                          if (
$ano->anoid == $row->anoid) {
                                      echo 
"<option selected='selected' value='$ano->anoid'>$ano->ano</option>\n";
                    
                
//Quita esta parte si sólo quieres ver el AÑO utilizado para buscar la base de datos (cuidado con el } final)
                    
                                    
} else {
                                      echo 
"<option value='$ano->anoid'>$ano->ano</option>\n";
                                           }
                                                                    }
                                                                        }
              
?>
            </select>
        </form></td>
        <td>&nbsp;</td>
      </tr>

      <tr>
        <td height="261" valign="top" class="sangriaA5">
<?php

//Sentencia sql (sin limit)
$_pagi_sql = ($select $from $where $order);

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 3;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente, 
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo true;//recomendado false.

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array('diaid''mesid''anoid');//No importa si son POST o GET

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

//Incluimos la información de la página actual
echo"<p>Noticias ".$_pagi_info."</p>";

//Leemos y escribimos los registros de la página actual
while($row mysql_fetch_array($_pagi_result)){
 
?>
<p><strong><a href="#self" onClick="MM_openBrWindow('usuario/documento_prensa.php?id=<?php echo $row['id']; ?>','','toolbar=yes,status=yes,scrollbars=yes,resizable=yes,width=650,height=550')"><?php echo $row['titulo']; ?></a></strong><br />
<span class="Estilo1">Aquí va la fecha</span></p>

<?php
}

//Incluimos la barra de navegación
echo"<p>".$_pagi_navegacion."</p>";

        
    
?>
</td>

        <td>&nbsp;</td>
      </tr>
GRACIAS, ESPERO PUEDAN AYUDARME

Última edición por raml; 06/05/2005 a las 16:17