Foros del Web » Programando para Internet » PHP »

Sistema archive como el de Fotolog

Estas en el tema de Sistema archive como el de Fotolog en el foro de PHP en Foros del Web. Hola! Estoy intentando crear un sistema de archive como fotolog, osea, que muestre en un listado los meses en los que publiqué algun post y ...
  #1 (permalink)  
Antiguo 04/04/2009, 10:02
 
Fecha de Ingreso: diciembre-2001
Mensajes: 118
Antigüedad: 22 años, 3 meses
Puntos: 0
Sistema archive como el de Fotolog

Hola!

Estoy intentando crear un sistema de archive como fotolog, osea, que muestre en un listado los meses en los que publiqué algun post y este listado esté dentro de un listado de años.

2009
enero (1)
febrero (0)
....
2008
enero (2)
febrero (5)
....

Para ello hago una consulta para saber si publiqué algun post (en la categoria 9)cada año, esta primera consulta realiza una segunda para saber cuantos posts publiqué cada mes de cada año.

Viene a ser esto:

Código PHP:
echo "<ul id='archivo_submenu'>";
$consulta_ano_blog "SELECT DISTINCT YEAR( fecha ) AS anio FROM tabla WHERE cat = 9 GROUP BY YEAR( fecha ) ORDER BY fecha desc"
$resultado_ano_blog mysql_query($consulta_ano_blog);

while (
$rab mysql_fetch_row($resultado_ano_blog)){
echo 
"<li class='year'>\n";
echo 
"<h5><a href='$rab[0]'>$rab[0]</a></h5>\n";
if (
$rab[0] == 2009){
echo 
"<ul id='months2009' class='selected'>\n";
} else {
echo 
"<ul id='months$rab[0]'>\n";

$consulta_mes_blog "SELECT CASE MONTH( fecha ) 
        WHEN 1 
        THEN 'enero' 
        WHEN 2 
        THEN 'febrero' 
        WHEN 3 
        THEN 'marzo' 
        WHEN 4 
        THEN 'abril' 
        WHEN 5 
        THEN 'mayo' 
        WHEN 6 
        THEN 'junio' 
        WHEN 7 
        THEN 'julio' 
        WHEN 8 
        THEN 'agosto' 
        WHEN 9 
        THEN 'septiembre' 
        WHEN 10 
        THEN 'octubre' 
        WHEN 11 
        THEN 'noviembre' 
        WHEN 12 
        THEN 'diciembre' 
        END AS mes,  
        count(fecha) AS posts 
        FROM tabla 
        WHERE cat = 9 AND YEAR(fecha) = $rab[0]
    GROUP BY MONTH( fecha )
        ORDER BY fecha asc"

    
$resultado_mes_blog mysql_query($consulta_mes_blog);
    while (
$rmb mysql_fetch_row($resultado_mes_blog)){
    echo 
"<li><a href='#' title='#'>$rmb[0] ($rmb[1])</a></li>\n";
    };
    
mysql_free_result($resultado_mes_blog);

    echo 
"</ul>\n">;
    echo 
"</li>\n">;
    };
    
mysql_free_result($resultado_ano_blog);
    echo 
"</ul>\n"
Lo bueno es que cada consulta independiente funciona correctamente, pero las 2 una embebida dentro de la otra no. ¿No es posible crear una consulta dentro del bucle de otra consulta?
  #2 (permalink)  
Antiguo 04/04/2009, 10:57
 
Fecha de Ingreso: mayo-2005
Mensajes: 45
Antigüedad: 18 años, 10 meses
Puntos: 1
Respuesta: Sistema archive como el de Fotolog

Yo tengo un sistema igual hecho y me funciona correctamente, no tiene por que dar problemas. ¿Qué es lo que falla?
  #3 (permalink)  
Antiguo 04/04/2009, 11:00
 
Fecha de Ingreso: diciembre-2001
Mensajes: 118
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: Sistema archive como el de Fotolog

errores tontos que ya localizé... aqui queda el codigo funcional y corregido como aporte. gracias de todos modos

Código PHP:
    echo "<ul id='archivo_submenu'>";
    
$consulta_ano_blog "SELECT DISTINCT YEAR( fecha ) AS anio FROM tabla WHERE cat = 9 GROUP BY YEAR( fecha ) ORDER BY fecha desc"
    
$resultado_ano_blog mysql_query($consulta_ano_blog);

    while (
$rab mysql_fetch_row($resultado_ano_blog)){
    echo 
"<li class='year'>";
    echo 
"<h5><a href='$rab[0]'>$rab[0]</a></h5>";
    if (
$rab[0] == 2009){
    echo 
"<ul id='months2009' class='selected'>";
    } else {
    echo 
"<ul id='months$rab[0]'>";
    };
    
$consulta_mes_blog "SELECT CASE MONTH( fecha ) 
        WHEN 1 
        THEN 'enero' 
        WHEN 2 
        THEN 'febrero' 
        WHEN 3 
        THEN 'marzo' 
        WHEN 4 
        THEN 'abril' 
        WHEN 5 
        THEN 'mayo' 
        WHEN 6 
        THEN 'junio' 
        WHEN 7 
        THEN 'julio' 
        WHEN 8 
        THEN 'agosto' 
        WHEN 9 
        THEN 'septiembre' 
        WHEN 10 
        THEN 'octubre' 
        WHEN 11 
        THEN 'noviembre' 
        WHEN 12 
        THEN 'diciembre' 
        END AS mes,  
        count(fecha) AS posts 
        FROM tabla
        WHERE cat = 9 AND YEAR(fecha) = $rab[0]
    GROUP BY MONTH( fecha )
        ORDER BY fecha asc"

    
$resultado_mes_blog mysql_query($consulta_mes_blog);
    while (
$rmb mysql_fetch_row($resultado_mes_blog)){
    echo 
"<li><a href='#' title='#'>$rmb[0] ($rmb[1])</a></li>\n";
    };
    
mysql_free_result($resultado_mes_blog);

    echo 
"</ul>";
    echo 
"</li>";
    };
    
mysql_free_result($resultado_ano_blog);
    echo 
"</ul>"
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 23:42.