Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La visualizzazione degli articoli

Come visualizzare gli articoli estraendone il contenuto da un database MySQL
Come visualizzare gli articoli estraendone il contenuto da un database MySQL
Link copiato negli appunti

La prima operazione che compiamo è quella che permette la visualizzazione degli articoli. Creiamo la nostra pagina PHP, poi procederò con i commenti e l'analisi:

<?php

$limit = 5; // articoli per pagina

$mysql = new mysqli('localhost', 'root', '', 'html_it_articles');
if(!$mysql)
{
    die("Errore di connessione al database, impossibile procedere");
}

$result = $mysql->query("SELECT COUNT(*) AS tot FROM articles")->fetch_assoc();

$page = isset($_GET['p']) ? $_GET['p'] : 1;
$totals = $result['tot'];
$totals_pages = ceil($totals / $limit);

$articles = $mysql->query("
    SELECT
        AR.id AS id,
        AR.title AS title,
        CONCAT(SUBSTR(AR.article, 1, 200),  ' ...') AS content,
        CONCAT(AU.surname, ' ', AU.name) AS author
    FROM
        articles AR,
        authors AU
    WHERE
        AR.author_id = AU.id
    ORDER BY id DESC
    LIMIT ".(($page - 1) * $limit).",".$limit);
?>
<html>
    <head>
        <title>Articoli</title>
    </head>
    <body>
        <ul>
            <li><a href="index.php">Lista articoli</a></li>
            <li><a href="insert.php">Inserisci un articolo</a></li>
        </ul>
        <p>Articoli totali: <?php echo $totals; ?></p>
        <table width="500px">
            <?php
            while($article = $articles->fetch_assoc())
            {
                printf('<tr>
                        <td>%d. <a href="show.php?id=%d">%s</a> (%s) </td>
                    </tr>
                    <tr>
                        <td><p>%s</p></td>
                    </tr>
                    <tr>
                        <td><hr /></td>
                    </tr>',
                    $article['id'],
                    $article['id'],
                    $article['title'],
                    $article['author'],
                    $article['content']
                    );
            }
            ?>
        </table>
        <p>Pagina <?php echo $page; ?> di <?php echo $totals_pages; ?> <br />
        <?php
        if($page - 1 > 0)
        {
            echo '<a href="?p='.($page - 1).'">< prev</a> | ';
        }else
        {
            echo '< prev | ';
        }
        if($page + 1 <= $totals_pages)
        {
                    echo '<a href="?p='.($page + 1).'">next ></a>';
        }else
        {
                    echo 'next >';
        }
        ?>
        </p>
    </body>
</html>

Il codice è volutamente semplice e lineare: per prima cosa ci connettiamo al database mysql e ci assicuriamo che la connessione sia andata a buon fine. Poi recuperiamo il numero totale degli articoli presenti nel database e calcoliamo il numero di pagine da visualizzare in base al limite impostato all'inizio dello script.

Successivamente recuperiamo la lista di articoli che devono essere visualizzati nella pagina corrente, limitando la selezione in base alla pagina nella quale si sta navigando. Una volta effettuata la selezione procediamo con la produzione di codice HTML: per prima cosa stampiamo il totale degli articoli trovati, poi iteriamo sui risultati al fine di poter stampare le righe della tabella contenenti le informazioni richieste.

Infine, a tabella terminata, costruiamo una semplicissima barra di navigazione che permette di muoverci tra le pagine.

Ti consigliamo anche