Archivio news per data...

Ciao, volevo creare un archivio news per data... una roba del tipo che se siamo al 19 Agosto 2006 e io il sito l'ho iniziato il 5 marzo 2005, nell'archivio avrò:

Marzo 2005

Aprile 2005

etc etc fino ad oggi Agosto 2006.

L'idea era di creare un ciclo FOR che mi stampi i link con le data, ll link ovviamente, passarebbe una variabile $_GET con la data che utilizzerei per ottenere gli articoli con una query WHERE.

Qualche idea? Qualche tutorial che mi illumini? Mi ci sto sbattendo da 2 ore ma non trovo una soluzione soddisfacente.

inviato 10 anni fa
eXile
X 0 X

sono diversi i problemi che devi affrontare:

1) creare l'elenco dei mesi, con il link del tipo mostra_news.php?mese=200604 (per Aprile 2006)

2) creare la query che tirestituisce le news

per la query tutto dipende da come memorizzi le date delle news nel DB. Usi un campo date o un timestamp?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Si gianni, questi 2 problemi so già come risolverli, il vero "problema" e che non mi viene nessuna idea su come far stampare una lista di tutti i mesi che sono trascorsi dalla creazione del sito ad oggi. Per il link e la query poi è facile, ma il mio cervello si è bloccato su come far stampare la lista dei mesi :)

Avevo intenzione di salvare il time stamp o la data del mese di creazione del sito nel db, per poi utilizzare il mese o il db del giorno d'oggi per fare i calcoli... ma non riesco a fare un ciclo for o qualcosa di simile che lavori bene... l'unica soluzione che ho trovato funzionante è memorizzare ogni mese che passa nel db, per poi richiamarli con una query, ma credo ci siano soluzioni migliori

risposto 10 anni fa
eXile
X 0 X

Una soluzione semplice semplice è quella di usare due list box una per i mesi e una per gli anni, anzichè i link, nella pagina php controlli poi la data e se è precedente alla creazione fai un echo "Sito non presente alla data selezionata" altrimenti mostri le news.

risposto 10 anni fa
LonelyWolf
X 0 X

prova così:

<?php
$mesi = array(1=>'gennaio', 'febbraio', 'marzo', 'aprile',
                'maggio', 'giugno', 'luglio', 'agosto',
                'settembre', 'ottobre', 'novembre','dicembre');
                
$anno = 2004;
$mese = 4; // es. aprile

$anno_corrente = date('Y');
$mese_corrente = date('n');

while (true)
{
   echo $mesi[$mese], ' ', $anno, "\n";
   
   if($anno == $anno_corrente && $mese == $mese_corrente) break;
   
   if($mese == 12)
   {
      $mese = 1;
      $anno++;
   }
   else
   {
      $mese++;
   }   
}
?>
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Doh, ti ringrazio! Funziona perfettamente e la soluzione era molto ma molto piu facile del previsto. Non so perchè il mio cervello si era convinto ke dovevo farlo funzionare con un ciclo for!

Grazie ancora per avermi oliato i neuroni :D

risposto 10 anni fa
eXile
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda