Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Ciclo per raggruppare record con lo stesso mese ed anno

    Il titolo è abbastanza eloquente,
    in pratica nel db ho una tabella notizie che ha , tra gli altri, un campo titolo un campo tipo e uno data_news contenente la data della notizia (campo di tipo date).

    Adesso , tra i vari tipi di notizie ne ho alcune di carattere mensile che dovrebbero essere raggruppate in base, appunto, al mese e all'anno, quindi devo visualizzare nella pagina, dopo aver estratto i dati dal database, il nome del mese e dell'anno ed il numero delle notizie che contiene edempio:

    Marzo 2005 (15)
    Febbraio 2005 (10)
    ecc.

    non riesco a fare questo, qualcuno può darmi una mano,
    grazie in anticipo,
    "Frase di elevato spessore culturale che ti lascia a riflettere con stupore misto a invidia per non aver pensato di metterla nella tua firma"

  2. #2
    Devi fare una query per ogni conteggio, oppure UNION che e' poi la stessa cosa.

    un esempio:
    codice:
    SELECT 'Gennaio 2005' as data,
    count(*) as tot 
    FROM tabella
    WHERE  MONTH(data) = 1 and YEAR(data) = 2005
    union
    SELECT 'Febbraio 2005',
    count(*)
    FROM tabella
    WHERE  MONTH(data) = 2 and YEAR(data) = 2005
    union
    SELECT 'Marzo 2005' ,
    count(*) as tot 
    FROM tabella
    WHERE  MONTH(data) = 3 and YEAR(data) = 2005
    union 
    .....
    puoi continuare fino a domani.... L'alias basta metterlo solo alla prima select... tanto gli altri servirebbero a niente.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    non potendo stabilire quali mesi ci sono come posso fare?
    "Frase di elevato spessore culturale che ti lascia a riflettere con stupore misto a invidia per non aver pensato di metterla nella tua firma"

  4. #4
    un'altra domanda, non posso selezionare nella query tutte le notizie di tipo mensile e poi con php fare un conteggio di quelle che hanno il mese e l'anno uguale e stampare appunto solo una voce per ogni mese-anno differenti?
    è possibile usare questo metodo invece di fare una query x ogni mese

    se ho detto qualche cazzata, scusatemi
    "Frase di elevato spessore culturale che ti lascia a riflettere con stupore misto a invidia per non aver pensato di metterla nella tua firma"

  5. #5
    Se devi fare tutto un periodo e non puoi sapere a priori chi si chi no... falli tutti, chi no, avra' il count(*) che rende zero. Poi con una if(tot=0) scarta... altrimenti stampa...

    Puoi mettere un SELECT *, ecc... e prova con order by id desc...

    dovresti beccare i record totali e l'ultima news che risponde alla condizione where. oppure order by data.... dipende dalla organizzazione della tua tabella.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    per il momento ho risoltocon:


    <?
    $flag2="";
    $all_news= mysql_query("SELECT MONTH(date_news) as mese, YEAR(date_news) as anno FROM news WHERE type ='RUBR' ORDER BY date_news DESC", $db_link) or die(mysql_error());
    while($rNews=mysql_fetch_array($all_news))
    {
    $mese_news = $rNews['mese'];
    $anno_news = $rNews['anno'];
    $Newdata2 = $mese_news."-".$anno_news;
    if($Newdata2!=$flag2)
    {
    $valore_mese = $mese_news;
    echo "<tr><td><a href=\"list_news.php?news_type=RUBR&amp;month=".$m ese_news."&amp;year=".$anno_news ."\">".$mesi[$mese_news]." ".$anno_news ."</a></td></tr><tr><td height=\"15\"></td></tr>";
    $flag2=$Newdata2;
    }
    }
    ?>

    che avevo usato per fare una cosa simile ma non me ne ricordavo assolutamente

    proverò comunque ad usare anche il tuo metodo
    grazie
    "Frase di elevato spessore culturale che ti lascia a riflettere con stupore misto a invidia per non aver pensato di metterla nella tua firma"

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.