sql >> Databasteknik >  >> RDS >> Mysql

Avancerat nyhetsarkiv År/månad med PHP MySql

Du kan inte använda GROUP BY om du också vill ha namnen på de enskilda artiklarna. Hämta helt enkelt hela listan och gruppera sedan i en array efter år och månad.

$sql = "SELECT timestamp, your_id_column, your_title_column FROM `NEWS` ORDER BY timestamp DESC";

$newsdata = DataAccess::ArrayFetch($sql);

$nav = array();

foreach ( $newsdata as $news ) {
    $year = date('Y', $news['timestamp']);
    $month = date('F', $news['timestamp']);
    $nav[$year][$month][$news['your_id_column']] = $news['your_title_column'];
}

När du itererar den resulterande arrayen kan du räkna nyheterna för varje år/månad för att generera summan.

<ul>
    <?php
    foreach ( $nav as $k => $v ) {
        ?>
        <li><?php echo $k ?>
            <ul>
            <?php
            foreach ( $v as $k2 => $v2 ) {
                ?>
                <li><?php echo $k2.' ('.sizeof($v2).')' ?>
                    <ul>
                        <?php
                        foreach ( $v2 as $k3 => $v3 ) {
                            ?>
                            <li><?php echo $v3 ?></li>
                            <?php   
                        }
                        ?>
                    </ul>
                </li>
                <?php
            }
            ?>
            </ul>
        </li>
        <?php
    }
    ?>
</ul>


  1. Escape-värden i Mysqljs

  2. Vad är det bästa sättet att hantera datum i PHP, MySQL, etc?

  3. förstå piltips i MySQL Workbench EER-diagram

  4. MYSQL Välj 5 poster för de sista 5 distinkta posterna