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

    Raggruppare per mese e visualizzare dentro una tabella

    Ciao a tutti !

    Stavo cercando sul forum un metodo per poter visualizzare una lista di record separati per mese avendo a disposizione per ogni record un campo date (AAAA-MM-GG).

    Es:

    Gennaio 2010
    record 1...
    record 2...

    Marzo 2010
    record 3...
    record 4...

    Ho trovato un topic di un po' di tempo fa, ed e' esattamente quello che cercavo io (funziona anche al primo colpo avendo modificato un po' la query per i miei scopi) ed il codice e' questo:

    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

    Il mio problema e':
    come posso fare per visualizzare il tutto dentro una tabella (html intendo..), piu' c he altro mi piacerebbe capire come fare perche' e' gia' un po' che smanetto ma non riesco a trovare la soluzione, e come l'ho trovata non e' che mi faccia impazzire.

    Ciao ciao, grazie.
    Micky

  2. #2
    Tabelle o div? Perché i div sarebbero meglio. Più moderni, funzionali e crossbrowser.
    Per le tabelle basta modificare il ciclo aggiungendo una riga per ogni record:
    Codice PHP:
    echo '<table>';
    while (
    $row mysql_fetch_assoc($query) ) { 
        
    sscanf($row['mese_anno'], '%4d%2d'$anno$mese); 
        if (
    $row['mese_anno'] != $mese_anno){ 
            
    $str.= '<tr><td>[b]'.$mesi[$mese].' '.$anno.'[/b]
    '

            
    $str.= $row['titolo'].'
    </td></tr>'

            
    $mese_anno $row['mese_anno'];  //questa riga è inutile. Dove la riutilizzi?
        

        else { 
        
    $str.= '<tr><td>'.$row['titolo'].'
    </td></tr>'

        } 

    echo 
    '</table>'
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Ciao !!!

    Purtroppo devo utilizzare una tabella.
    Ho provato con il codice che mi hai postato ma non mi da nessun risultato.
    Avevo provato anche io a implementare cosi' la tabella ma era proprio a quello che mi riferivo io, questa soluzione non mi fa impazzire, perche' oltre a due righe di testo (non ci sarebbe problema..) io devo implementare anche un immagine e dovrei avere piu' controllo su questa tabella (...dannata...aggiugerei... ..).

    Nel frattempo grazie per l'interessamento !

    Ciaooo

  4. #4
    Beh, l'estrazione dal database con un ciclo ti obbliga ad avere una serie di dati uguali e formattati allo stesso modo. Non so che controllo tu possa avere sul database ma potresti creare dei campi in più ed inserire al loro interno i settaggi della tabella di cui hai bisogno. Se riesci a spiegarmi esattamente cosa vorresti ottenere potrei darti un consiglio più mirato.
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Grazie per la disponibilta' !!!

    A dire il vero sarei riuscito ad adattare il tutto con i tuoi consigli su come implementare la tabella.

    A dire il vero pero', ho notato una strana cosa, utilizzando questo codice:

    Codice PHP:

    $mesi 
    = array(=> 'Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre');

    $query mysql_query("SELECT *,EXTRACT(year_month FROM data_serata_2) AS mese_anno FROM serate WHERE scadenza_serata > NOW() AND attiva = 1 ORDER BY mese_anno DESC") or die(mysql_error() );

    $mese_anno '';
    $str '';

    echo 
    "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";

    while (
    $row mysql_fetch_assoc($query) ) {
        
        
    sscanf($row['mese_anno'], '%4d%2d'$anno$mese);

                
    $separo explode("-"$row['data_serata_2']);

                    
    // AGGIUNGO LA QUERY PER IL MESE
                    
    $query_mese "SELECT * FROM mese WHERE mese_numero = $separo[1]";
                    
    $result_mese mysql_query($query_mese,$conn); 
                    
    $array_mese mysql_fetch_assoc($result_mese);
                    
                    
    $titolo_ra str_replace("\\"''"$row[titolo]");
                    
    $titolo_ra_discoteca str_replace("\\"''"$row[titolo_discoteca]");    
                
                    if(
    strlen($row['titolo_discoteca']) == 0) {
                    
                        
    $titolo_disco_concerti "$titolo_ra";
                    
                    } else {
                        
                        
    $titolo_disco_concerti "$titolo_ra + $titolo_ra_discoteca";
                        
                    }
                
                    
    //$titolo_pagina_interna =  $array['giorno_serata']."".$separo[2]."".$array_mese_venerdi['mese']."".$separo[0];
                     
    $titolo_pagina =  $row['giorno_serata']."".$separo[2]."".$array_mese['mese']."".$separo[0].":".$titolo_disco_concerti;
        
        if (
    $row['mese_anno'] != $mese_anno){
                     
            
    $str.= '<tr><td><div class="mesi_interne">[img]images/pallino.gif[/img]'.$mesi[$mese].' '.$anno.'</div></td></tr>';
            
    $str.= '<tr><td>[url="$array_photo[link_esterno]"]'.$titolo_pagina.'[/url]</td></tr>';
            
    $mese_anno $row['mese_anno'];
            
        } else {
        
            
    $str.= '<tr><td>[url="$array_photo[link_esterno]"]'.$titolo_pagina.'[/url]</td></tr>';
        
        }
    }

    echo 
    "<div class=\"abstract\">$str</div>";

    echo 
    "</table>"
    Purtroppo mi genera la lista cosi':

    Gennaio 2011
    Mercoledì 05 Gennaio 2011
    Sabato 08 Gennaio 2011
    Sabato 29 Gennaio 2011
    Venerdì 07 Gennaio 2011
    Venerdì 14 Gennaio 2011
    Sabato 15 Gennaio 2011
    Venerdì 21 Gennaio 2011
    Sabato 01 Gennaio 2011
    Lunedì 03 Gennaio 2011

    Dicembre 2010
    Venerdì 17 Dicembre 2010
    Sabato 18 Dicembre 2010
    Sabato 25 Dicembre 2010
    Venerdì 31 Dicembre 2010
    Domenica 19 Dicembre 2010

    E non e' per nulla corretta, per esempio:
    01 GENNAIO 2011
    dovrebbe stare prima di MERCOLEDI' 05 GENNAIO 2011


    Ma dove sbaglio ?





  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    così a occhio ORDER BY mese_anno vorra dire che ordini per mese anno e non per giorno quindi il giorno che c'entra????

  7. #7
    Questa query mi e' davvero ostica....
    Allora devo adattarla per il giorno, ma poi, come faccio a creare la lista con i mesi ?

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    GROUP BY anno ORDER BY mese,giorno

  9. #9
    Allora, cosi' me li organizza in maniera corretta, pero', mi e' sparito il mese sopra i vari eventi, devo percio' sempre recuperare anche il mese ? Giusto ?

    Con questa query:


    Codice PHP:
    SELECT *,EXTRACT(day FROM data_serata_2) AS giorno FROM serate WHERE scadenza_serata NOW() AND attiva 1 GROUP BY giorno ORDER BY giorno 
    Ottengo questo:

    Sabato 01 Gennaio 2011
    Lunedì 03 Gennaio 2011
    Mercoledì 05 Gennaio 2011
    Venerdì 07 Gennaio 2011
    Sabato 08 Gennaio 2011
    Venerdì 14 Gennaio 2011
    Sabato 15 Gennaio 2011
    Venerdì 17 Dicembre 2010
    Sabato 18 Dicembre 2010
    Domenica 19 Dicembre 2010
    Venerdì 21 Gennaio 2011
    Sabato 25 Dicembre 2010
    Sabato 29 Gennaio 2011
    Venerdì 31 Dicembre 2010

    Mi sto avvicinando alla soluzione.....

  10. #10
    Beh si, se vuoi vedere il mese lo devi estrarre
    Ce l'ho fatta! - ItalianPixel -

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.