Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    raggruppare record per data

    Stò cercando di farmi un blog in php.
    Ho una tabella nel database con degli articoli. Ogni articolo presenta una data di inserimento.
    ( TIMESTAMP - ESEMPIO 20060824205925)
    Qualcuno sa' dirmi come faccio a raggruppare gli articoli per mesi?
    Vorrei che in AUTOMATICO mi venisse fuori sulla destra del sito una lista così:

    Gennaio 2006
    - titolo articolo
    - titolo articolo
    Maggio 2006
    Giugno 2006
    ecc. ecc.

    chiaramente i mesi non devono essere tutti ma presi a seconda che nel database ci siano articoli in quel mese.
    Qualcuno riesce ad aiutarmi?
    Spero di essere stato chiaro.

    grazie

  2. #2
    cosi' su due piedi, prova questo

    $mese=1; //gennaio
    $anno=2006; //anno
    $inizio=mktime(0,0,1, $mese, 1,$anno);
    $fine=mktime(23,59,59, $mese+1, 0, $anno);

    $query="select * from prodotti where data>=$inizio or data<=$fine";
    Kaworu.it
    Bookmarks on line i tuoi preferiti ovunque
    il tempo è il miglior dottore.....solo che è parecchio lento ...troppo lento
    wxKonTEXT Editor di testi(linux, win e mac), new version

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select count(*) as tot,extract(year_month from campo_data) as mese_anno
    from tabella
    group by mese_anno
    order by mese_anno desc

  4. #4
    Non mi è molto chiaro, secondo me bisogna fare 2 considerazioni:

    1 PARTE dello script: rendere dinamica la scrittura dei mesi.
    Controllando il TIMESTAMP (data inserimento) di ogni articolo inserito si scrive in automatico il mese, quindi non sono io ad inserire manualmente il mese con relativo link, ma lo deve fare il sistema facendo un controllo sugli articoli inseriti. E' chiaro che se a marzo non ci sono articoli, il mese di marzo non si vede.

    2 PARTE dello script: associare ad ogni mese gli articoli inseriti
    Fatto il controllo dei mesi associamo ad ogni mese gli articoli pubblicati. Esempio:

    Gennaio 2006 (15) //15 stà per 15 articoli inseriti in questo mese
    > Titolo 1
    > Titolo 2
    > Titolo 3 // i titoli scritti qui non sono altro che il campo "$titolo" di ogni articolo

    Marzo 2006 (2) // come vedete febbraio non cè perchè non ci sono articoli
    Aprile 2006 (3)

    Ora mi chiedo, come si fa a fare tutto questo partendo da una tabella articoli e un semplice TIMESTAMP (20060824205925) di ogni articolo??

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    $mesi = array(=> 'Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic');

    $query mysql_query("select titolo,extract(year_month from campo_data) as mese_anno
                          from tabella
                          order by mese_anno desc"
    ) or die(mysql_error() );

    $mese_anno '';
    $str '';
    while (
    $row mysql_fetch_assoc($query) ) {
        
    sscanf($row['mese_anno'], '%4d%2d'$anno$mese);
        if (
    $row['mese_anno'] != $mese_anno){
            
    $str.= '[b]'.$mesi[$mese].' '.$anno.'[/b]
    '
    ;
            
    $str.= $row['titolo'].'
    '
    ;
            
    $mese_anno $row['mese_anno'];
        }
        else {
        
    $str.= $row['titolo'].'
    '
    ;
        }
    }
    echo 
    $str
    poi magari rendi i titoli linkabili e fai tutte le modifiche che vuoi.

  6. #6
    Intanto grazie della risposta!
    Scusa la mia ignoranza ma posso sapere a cosa corrisponde:
    year_month e mese_anno ??
    Da dove li prendo?

    grazie

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da scalcodesign
    Intanto grazie della risposta!
    Scusa la mia ignoranza ma posso sapere a cosa corrisponde:
    year_month e mese_anno ??
    Da dove li prendo?

    grazie
    mese_anno è semplicemente un alias che ti serve per recuperare il valore quando poi usi $row['mese_anno'].

    extract(year_month... ) è una funzione di mysql che ti permette di estrarre l'anno e il mese dal tuo timestamp.

    Ad esempio da una data come 20060824205925 year_month sarà 200608.
    Guarda le pillole sulle date di Piero.

    Quindi lasciali pure come sono.

  8. #8
    Ahn perfetto allora!
    grazie 1000 per l'aiuto, ora lo provo poi ti faccio sapere se trovo dei problemi.
    grazieee!!!!!!!

  9. #9
    scusa Nicola,
    come faccio a modificare il tuo script in questo modo?

    ESEMPIO
    NOVEMBRE 2006 (2 articoli)
    DICEMBRE 2006 (5 articoli)

    senza mettere i titoletti sotto perchè mi sono reso conto che per questioni di spazio mi sballa la pagina.
    Se riesci ad aiutarmi quando hai un attimo di tempo, mi faresti un grandissimo piacere!


    Cmqe l'altra versione me la tengo perchè mi può essere utile in altre occasioni.

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    $mesi = array(=> 'Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic');

    $query mysql_query("select count(titolo) as quanti,extract(year_month from campo_data) as mese_anno
                          from tabella
                          group by mese_anno
                          order by mese_anno desc"
    ) or die(mysql_error() );

    $str '';
    while (
    $row mysql_fetch_assoc($query) ) {
        
    $mese_anno $row['mese_anno'];
        
    $quanti $row['quanti'] > $row['quanti'].' articoli' $row['quanti'].' articolo';
        
    sscanf($row['mese_anno'], '%4d%2d'$anno$mese);
        
    $str.= "<a href=\"index.php?data=$mese_anno\">".$mesi[$mese].' '.$anno.'</a> ('.$quanti.")
    \n"
    ;

    }
    echo 
    $str
    Una volta che recuperi la variabile data fai un controllo sulla validità della stessa (che sia un numero di 6 cifre eccetera) e poi estrai i record relativi.

    codice:
    select * from tabella
    where extract(year_month from campo_data) = \"$data\"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.