Paginando por meses usando timestamps tipo unix
![]()
Nivel 4 (755 posts)
2 
| #0 | ![]() |
thessoro | 20 ene 04 |
A raíz de una duda en el canal, encontré un par de soluciones en el manual siempre caótico de mysql que quizá os puedan interesar.
Guardando las fechas en la bd en formato timestamp de unix se quería primero mostrar una lista de links tipo:
Enero de 2004
Febrero de 2004
...
y despues mostrar los resultados en otro script tras haber pulsado el link.
Siendo fecha el campo que contiene los timestamps para generar el listado de links podriamos usar:
$meses=array(\"Enero\",\"Febrero\",....);
$query=\"Select month(from_unixtime(fecha)),year(from_unixtime(fecha)) from tabla order by fecha\";
$resid=mysql_query($query,$link);
// Esto devuelve una lista ordenada de menor a mayor con el mes y año que consta en el timestamp de cada registro.
while ($resultado=mysql_fetch_array($resid)) {
if ($resultado[0]!=$mes && $resultado[1]!=ano) {
$mes=$resultado[0];
$ano=$resultado[1];
echo \"<link a href=\\\"otrapagina.php?mes=$mes&ano=$ano\\\">{$meses[$mes-1]} de $ano</a>\";
}
}
Despues en el script destino, con un link tipo otrapagina.php?mes=5&ano=2003 podriamos
$query=\"Select * from tabla where month(from_unixtime(fecha))={$_GET[\'mes\']} and year(from_unixtime(fecha))={$_GET[\'ano\']}\";
De aqui sacariamos todos los registros del mes y año seleccionados.
Mas cosas curiosas sobre operaciones con fechas en mysql en:
Date and Time functions
Guardando las fechas en la bd en formato timestamp de unix se quería primero mostrar una lista de links tipo:
Enero de 2004
Febrero de 2004
...
y despues mostrar los resultados en otro script tras haber pulsado el link.
Siendo fecha el campo que contiene los timestamps para generar el listado de links podriamos usar:
$meses=array(\"Enero\",\"Febrero\",....);
$query=\"Select month(from_unixtime(fecha)),year(from_unixtime(fecha)) from tabla order by fecha\";
$resid=mysql_query($query,$link);
// Esto devuelve una lista ordenada de menor a mayor con el mes y año que consta en el timestamp de cada registro.
while ($resultado=mysql_fetch_array($resid)) {
if ($resultado[0]!=$mes && $resultado[1]!=ano) {
$mes=$resultado[0];
$ano=$resultado[1];
echo \"<link a href=\\\"otrapagina.php?mes=$mes&ano=$ano\\\">{$meses[$mes-1]} de $ano</a>\";
}
}
Despues en el script destino, con un link tipo otrapagina.php?mes=5&ano=2003 podriamos
$query=\"Select * from tabla where month(from_unixtime(fecha))={$_GET[\'mes\']} and year(from_unixtime(fecha))={$_GET[\'ano\']}\";
De aqui sacariamos todos los registros del mes y año seleccionados.
Mas cosas curiosas sobre operaciones con fechas en mysql en:
Date and Time functions
