-
Select notizie homepage
Salve a tutti. Ho un problema che non riesco a risolvere, mi spiego. Ho un home page contenente 20 notizie
Notizia 20
Notizia 19
Notizia 18
Notizia 17
Notizia 16
ecc..
Adesso, siccome vorrei stabilire un numero massimo di notizie per ogni pagina (ovvero 20), vorrei che questa home page diventasse secondaria e vorrei creare una home page primaria. Solo che, quella primaria dovrà contenere la nuova notizia che pubblicherò piu le altre meno recenti, arrivando fino a 20.
Mi spiego meglio. Se le notizie sono 21, la home numero uno dovrà contenere 20 notizie (quella recente appena pubblicato piu quelle meno recenti, ovvero 19) e la home numero due, solo una notizia (ovvero quella meno recente). Cosi si avranno 20 nella prima e una nella seconda.
Esempio: 22 notizie. 20 nella home primaria, le 2 meno recenti nella home secondaria.
Esempio: 23 notizie. 20 nella home primaria, le 3 meno recenti nella home secondaria.
E cosi via ad ogni notizia che pubblico. Non so se mi sono spiegato. Come potrei fare? La mia idea era di limitare il numero di notizie nella home primaria con
Codice PHP:
SELECT * FROM ... LIMIT 20
Ma come faccio a prendere sempre l'ultima notizia pubblicata e ad inserire l'ultima nella seconda home? Grazie in anticipo.
-
Ciò che vuoi ottenere si chiama paginazione, ovvero la suddivisione di un insieme di entità in sottoinsiemi discreti, limitati e distinti.
Per la suddivisione in pagine hai bisogno di passare allo script l'informazione sulla pagina corrente, ad esempio tramite $_GET.
Per l'ordinamento dei risultati da recuperare hai bisogno, se non l'hai già fatto, di arricchire la tabella con l'informazione sulla data di pubblicazione. Un campo di tipo TIMESTAMP andrà bene. Potrai quindi usare ORDER BY nome_campo DESC nell'interrogazione.
Per la paginazione vera e propria dovrai prima calcolare l'offset come (pagina - 1) * dimensione_pagina, e quindi usare l'informazione per effettuare l'interrogazione: LIMIT 20 OFFSET offset_calcolato.
Riassumendo, il codice viene pressapoco così (assumendo che tu passi l'informazione della pagina tramite $_GET['pagina'] e il campo di tipo timestamp si chiami timestamp_creazione):
Codice PHP:
$dimensione = 20;
$pagina = isset($_GET['pagina']) ? $_GET['pagina'] : 1;
$offset = ($pagina - 1) * $dimensione;
$query = "SELECT * FROM ... ORDER BY timestamp_creazione DESC LIMIT $dimensione OFFSET $offset";