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>
<!-- 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>
<!-- 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>
<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>
<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> </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> </td>
</tr>
GRACIAS, ESPERO PUEDAN AYUDARME