Foros del Web » Programando para Internet » PHP »

Paginacion por mes con BD

Estas en el tema de Paginacion por mes con BD en el foro de PHP en Foros del Web. Código PHP: <?php  include  "config.php" ; //conectamos a mysql $conecta  =  mysql_connect ( $dbhost , $dbuser , $dbpass ) or die( "Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php" ); //seleccionamos db mysql_select_db ( $dbname , $conecta ...
  #1 (permalink)  
Antiguo 14/01/2004, 19:22
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Paginacion por mes con BD

Código PHP:
<?php 

include "config.php";

//conectamos a mysql
$conecta mysql_connect($dbhost,$dbuser,$dbpass) or die("Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php");
//seleccionamos db
mysql_select_db($dbname,$conecta) or die("Imposible seleccionar DB.\n<br />\nPrueba en editar el archivo config.php");

$fecha_infmktime(0,0,0,$_GET['mes'] ,1,$_GET['ano']);
$fecha_supstrtotime(date("m/d/Y",$fecha_inf)."+1 month");


//muestra todos los mensajes
$query "select * from libro where fechapag>=$fecha_inf and fechapag<$fecha_sup order by fechapag desc";
$resp mysql_query($query) or die (mysql_error());

while (
$datos mysql_fetch_array($resp)) {
echo 
"<table width=\"700\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n"
    
."<tr>\n"
    
."<td width=\"25%\">Autor</td>\n"
    
."<td width=\"75%\">Mensaje</td>\n"
    
."</tr>\n"
    
."<tr>\n"
    
."<td width=\"25%\" align=\"center\" valign=\"top\"> $datos[autor] <br />"; if ($mostrar_ip == 1) { echo "IP: $datos[ip]"; }
echo 
"</td>\n"
    
."<td width=\"75%\" valign=\"top\"> Enviado: $datos[fecha] Título: $datos[titulo] <hr size=\"1\" /> $datos[mensaje] </tr>\n"
    
."</tr>\n"
    
."</table>\n"
    
."<br />\n\n";
}

//liberamos memoria y desconecta de mysql
@mysql_free_result($resp); mysql_close($conecta);



?>
Tengo este archivo que se llama leer.php

si ustedes ven este enlace vera que funciona

http://www.g2project.com/pruebas/lib...hp?mes=1&ano=4

Como crearia los links dinamicos

esta es mi idea

echo "<a href=\"leer.php?mes=$calcular_mes&an o=$calcular_ano\">Siguiente</a>";

donde $calcular_mes y $calcular_ano se calculan a partir de $_GET['mes'] y $_GET['ano']

Saludos y espero entiendan
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #2 (permalink)  
Antiguo 14/01/2004, 20:32
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
mmm... creo que no entendí bien...
Asumo que al hacer click en "siguiente" irá a mostrar los registros del mes siguiente.

Se me ocurre que podrías hacer un script que sume uno al mes... si el mes es 12, entonces lo regresa a uno y aumenta uno al año. Sería así:
Código PHP:
$mes $_GET['mes'];
$ano $_GET['ano'];
$mes++;//Suma uno al mes
if($mes >= 13){//Si es mayor que 12
   
$mes 1;//$mes se "resetea" a uno
   
$ano++;//$ano aumenta en uno

Y utilizas esas variables en tus enlaces.

No sé si eso es lo que querías hacer...

Saludos
  #3 (permalink)  
Antiguo 14/01/2004, 22:16
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
a punto de lograrlo

mi idea es lograr esto pero no se como obtener los enlaces


http://www.salud.gob.mx/ssa_app/noti...ioNoticia=2000


:)
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #4 (permalink)  
Antiguo 14/01/2004, 23:26
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
En realidad, la generación de los enlaces no tienen nada que ver con la BD... Lo que hay en el link que pusiste se puede lograr así:
Código PHP:
<?php
$meses 
= array("nada""enero""febrero""marzo""abril""mayo""junio""julio""agosto""setiembre""octubre""noviembre""diciembre");
for(
$i=2004;$i>=2000;$i--){
    echo 
"<table border=\"1\" align=\"center\">
        <tr><td colspan=\"6\" align=\"center\">Comunicados - $i</td></tr>
        
        <tr>"
;
        for(
$j=1;$j<=6;$j++){
            echo 
"<td><a href=librosql/leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
        }
        echo 
"</tr>
        <tr>"
;
        for(
$j=7;$j<=12;$j++){
            echo 
"<td><a href=librosql/leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
        }
        echo 
"</tr></table><br><br><hr>";
}
?>
Espero que ahora sí haya podido ayudarte.

Saludos
  #5 (permalink)  
Antiguo 16/01/2004, 16:52
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Gracias

En realidad funciono pero activo los enlaces como si hubiera registros y aun no llegamos a febrero del 2004 :)


Saludos y como se solucionaria eso :)

Gracias paisa
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #6 (permalink)  
Antiguo 17/01/2004, 13:53
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Código PHP:
<?php
$mayor_ano 
2004;
$mayor_mes 4;

$meses = array("nada""enero""febrero""marzo""abril""mayo""junio""julio""agosto""setiembre""octubre""noviembre""diciembre");
for(
$i=$mayor_ano;$i>=2000;$i--){
    echo 
"<table border=\"1\" align=\"center\">
        <tr><td colspan=\"6\" align=\"center\">Comunicados - $i</td></tr>
        
        <tr>"
;
        for(
$j=1;$j<=6;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=librosql/leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }
        }
        echo 
"</tr>
        <tr>"
;
        for(
$j=7;$j<=12;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=librosql/leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }        }
        echo 
"</tr></table><br><br><hr>";
}
?>
En realidad lo que pretendo es darte una idea de cómo se pueden resolver las cosas... no he tratado de optimizar ni nada parecido...

Las variables de $mayor_mes y $mayor_ano las puedes obtener directamente de la BD haciendo una consulta donde pidas únicamente la fecha más reciente.

saludos
  #7 (permalink)  
Antiguo 17/01/2004, 15:10
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Gracias local

tienes razon respecto a como lograr
las variables de $mayor_mes y $mayor_ano
Saludos, cada dia mas amo php y ahora mysql
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #8 (permalink)  
Antiguo 17/01/2004, 18:08
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Para quien lea esto y se pregunte ¿Cómo?... Una forma es:
Código PHP:
$sql "SELECT MONTH(MAX(campo_fecha)) AS mayor_mes, YEAR(MAX(campo_fecha)) AS mayor_ano FROM fechas";
$result mysql_query($sql) or die("error_1!!".mysql_error());
$row mysql_fetch_assoc($result);

$mayor_ano $row['mayor_ano'];
$mayor_mes $row['mayor_mes'];

$meses = array("nada""enero""febrero""marzo""abril""mayo""junio""julio""agosto""setiembre""octubre""noviembre""diciembre");
for(
$i=$mayor_ano$i>=2000$i--){
    echo 
"<table border=\"1\" align=\"center\">

//... etc, etc, etc



saludos
  #9 (permalink)  
Antiguo 18/01/2004, 10:29
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
bendito error

Código PHP:
<?php 

include "config.php";

//conectamos a mysql
$conecta mysql_connect($dbhost,$dbuser,$dbpass) or die("Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php");
//seleccionamos db
mysql_select_db($dbname,$conecta) or die("Imposible seleccionar DB.\n<br />\nPrueba en editar el archivo config.php");

$fecha_infmktime(0,0,0,$_GET['mes'] ,1,$_GET['ano']);
$fecha_supstrtotime(date("m/d/Y",$fecha_inf)."+1 month");


//muestra todos los mensajes
$query "select * from libro where fechapag>=$fecha_inf and fechapag<$fecha_sup order by fechapag desc";
$resp mysql_query($query) or die (mysql_error());

while (
$datos mysql_fetch_array($resp)) {
echo 
"<table width=\"700\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n"
    
."<tr>\n"
    
."<td width=\"25%\">Autor</td>\n"
    
."<td width=\"75%\">Mensaje</td>\n"
    
."</tr>\n"
    
."<tr>\n"
    
."<td width=\"25%\" align=\"center\" valign=\"top\"> $datos[autor] <br />"; if ($mostrar_ip == 1) { echo "IP: $datos[ip]"; }
echo 
"</td>\n"
    
."<td width=\"75%\" valign=\"top\"> Enviado: $datos[fecha] Título: $datos[titulo] <hr size=\"1\" /> $datos[mensaje] </tr>\n"
    
."</tr>\n"
    
."</table>\n"
    
."<br />\n\n";
}

//liberamos memoria y desconecta de mysql
@mysql_free_result($resp); mysql_close($conecta);



?>
<?php
//conectamos a mysql
$conecta mysql_connect($dbhost,$dbuser,$dbpass) or die("Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php");
//seleccionamos db
mysql_select_db($dbname,$conecta) or die("Imposible seleccionar DB.\n<br />\nPrueba en editar el archivo config.php");
$sql "SELECT MONTH(MAX(fechapag)) AS mayor_mes, YEAR(MAX(fechapag)) AS mayor_ano FROM libro";
$result mysql_query($sql) or die("error_1!!".mysql_error());
$row mysql_fetch_assoc($result);

$mayor_ano $row['mayor_ano'];
$mayor_mes $row['mayor_mes'];

$meses = array("nada""enero""febrero""marzo""abril""mayo""junio""julio""agosto""setiembre""octubre""noviembre""diciembre");
for(
$i=$mayor_ano;$i>=2003;$i--){
    echo 
"<table border=\"1\" align=\"center\">
        <tr><td colspan=\"6\" align=\"center\">Mensajes - $i</td></tr>
        
        <tr>"
;
        for(
$j=1;$j<=6;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }
        }
        echo 
"</tr>
        <tr>"
;
        for(
$j=7;$j<=12;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }     
        }
        echo 
"</tr></table><br><br><hr>";

//liberamos memoria y desconecta de mysql
@mysql_free_result($resp); mysql_close($conecta);
?>
http://www.g2project.com/pruebas/librosql/leer2.php

Parse error: parse error in /home/httpd/vhosts/g2project.com/httpdocs/pruebas/librosql/leer2.php on line 80

A que se debe este error?
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #10 (permalink)  
Antiguo 18/01/2004, 19:41
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Gerald... cuando te da un error de este tipo... por favor indica con un comentario cuál es la línea de error... por ejemplo... podrías indicar cual es la línea 80???...

Lo que yo veo es que estás "liberando la memoria" de un resultado que ya no existe (en la última línea de tu código), pues el id del resultado ahora se llama $result y no $resp.

En general no me parce buena idea andar ocultando errores con "@" cuando estás en tiempo de diseño, así como tampoco poner más de una acción por línea... eso complica un poco la detección de errores...

Saludos
  #11 (permalink)  
Antiguo 19/01/2004, 14:51
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Código PHP:
<?php 

include "config.php";

//conectamos a mysql
$conecta mysql_connect($dbhost,$dbuser,$dbpass) or die("Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php");
//seleccionamos db
mysql_select_db($dbname,$conecta) or die("Imposible seleccionar DB.\n<br />\nPrueba en editar el archivo config.php");

$fecha_infmktime(0,0,0,$_GET['mes'] ,1,$_GET['ano']);
$fecha_supstrtotime(date("m/d/Y",$fecha_inf)."+1 month");


//muestra todos los mensajes
$query "select * from libro where fechapag>=$fecha_inf and fechapag<$fecha_sup order by fechapag desc";
$resp mysql_query($query) or die (mysql_error());

while (
$datos mysql_fetch_array($resp)) {
echo 
"<table width=\"700\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n"
    
."<tr>\n"
    
."<td width=\"25%\">Autor</td>\n"
    
."<td width=\"75%\">Mensaje</td>\n"
    
."</tr>\n"
    
."<tr>\n"
    
."<td width=\"25%\" align=\"center\" valign=\"top\"> $datos[autor] <br />"; if ($mostrar_ip == 1) { echo "IP: $datos[ip]"; }
echo 
"</td>\n"
    
."<td width=\"75%\" valign=\"top\"> Enviado: $datos[fecha] Título: $datos[titulo] <hr size=\"1\" /> $datos[mensaje] </tr>\n"
    
."</tr>\n"
    
."</table>\n"
    
."<br />\n\n";
}

//liberamos memoria y desconecta de mysql
@mysql_free_result($resp); mysql_close($conecta);



?>
<?php
//conectamos a mysql
$conecta mysql_connect($dbhost,$dbuser,$dbpass) or die("Imposible conectar con MySQL.\n<br />\nPrueba en editar el archivo config.php");
//seleccionamos db
mysql_select_db($dbname,$conecta) or die("Imposible seleccionar DB.\n<br />\nPrueba en editar el archivo config.php");
$sql "SELECT MONTH(MAX(fechapag)) AS mayor_mes, YEAR(MAX(fechapag)) AS mayor_ano FROM libro";
$result mysql_query($sql) or die("error_1!!".mysql_error());
$row mysql_fetch_assoc($result);

$mayor_ano $row['mayor_ano'];
$mayor_mes $row['mayor_mes'];

$meses = array("nada""enero""febrero""marzo""abril""mayo""junio""julio""agosto""setiembre""octubre""noviembre""diciembre");
for(
$i=$mayor_ano;$i>=2003;$i--){
    echo 
"<table border=\"1\" align=\"center\">
        <tr><td colspan=\"6\" align=\"center\">Mensajes - $i</td></tr>
        
        <tr>"
;
        for(
$j=1;$j<=6;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }
        }
        echo 
"</tr>
        <tr>"
;
        for(
$j=7;$j<=12;$j++){
            if(
$j $mayor_mes && $i == $mayor_ano){
                echo 
"<td>".$meses[$j]."</td>";
            }else{
                echo 
"<td><a href=leer.php?mes=$j&ano=$i>".$meses[$j]."</a></td>";
            }     
        } 
//aqui da el error
        
echo "</tr></table><br><br><hr>";

//liberamos memoria y desconecta de mysql
@mysql_free_result($result); mysql_close($conecta);
?>
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
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 00:59.