Visualizzare i titoli degli articoli

Visualizziamo i titoli degli articoli.

Dopo aver creato le tabelle e popolato il database con un certo numero di articoli, possiamo occuparci di visualizzarne i titoli. In questa lezione ci occuperemo quindi di mostrare gli ultimi articoli, ordinati per data.
Prima di tutto creiamo, come sempre, la pagina che dovrà contenere i titoli inseriti. Questa pagina la chiamiamo index.php visto che sarà la prima pagina dello script:

<?
include(“top_foot.inc.php”);
include(“config.inc.php”);
top();

Anche qui opereremo sul database e dovremo come sempre connetterci utilizzando le funzioni già viste in precedenza:

$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die        (“Errore nella connessione. Verificare i parametri nel file config.inc.php”);
mysql_select_db($db_name, $db)
or die   (“Errore nella selezione del database. Verificare i parametri nel file config.inc.php”);

Query

A questo punto veniamo alla query che dirà a MySQL di selezionare gli ultimi articoli in ordine cronologico:

$query = “SELECT id, data, titolo FROM news ORDER BY data DESC LIMIT 0,5”;

Questa query contiene molte delle possibilità che abbiamo a disposizione per la selezione di particolari righe dal database. Vediamole nel dettaglio:

SELECT id,data,titolo FROM news

Questa prima parte è sempre necessaria quando vogliamo selezionare una o più righe. In particolare indica che a noi interessano solo le colonne id, data e titolo della tabella news. Se avessimo voluto selezionare tutte le colonne, invece di indicarle tutte avremmo potuto usare la scorciatoia SELECT * FROM news. Se utilizzassimo solo questa parte della query, ci verrebbero restituite tutte le righe senza un particolare ordine. Questo perché non avremmo applicato nessun vincolo alla ricerca. I vincoli possono essere di diversi tipi e vengono specificati in seguito.

ORDER BY data DESC

Anche aggiungendo questo verranno selezionate tutte le righe, ma in ordine di data. Visto che abbiamo aggiunto il parametro DESC la data verrà ordinata in modo decrescente. Quindi la prima riga della selezione sarà l’ultimo articolo inserito, la seconda sarà il penultimo e così via.

LIMIT 0,5

È il vincolo che limita la selezione a sole cinque righe. I due parametri da fornire rappresentano il primo elemento della selezione da cui partire (la numerazione parte da 0) e il numero di righe da selezionare. Quindi aggiungendo questo vincolo limitiamo la selezione ai primi cinque elementi. Ci verranno quindi visualizzati solo gli ultimi 5 articoli inseriti.

Inviamo quindi la query al database e ne ricaviamo un identificatore nella variabile $result:

$result = mysql_query($query, $db);

Attraverso $result, potremo ora ottenere le singole righe che ci vengono restituite dal database. Per fare questo utilizziamo la funzione

mysql_fetch_array :

while ($row = mysql_fetch_array($result))

La funzione restituisce una sola riga del database in base alla selezione della query identificata da $result. Una volta ottenuta la prima riga, sarà possibile ricavare la riga seguente richiamando nuovamente la funzione mysql_fetch_array. Quando le rige saranno finite, la funzione restituirà FALSE. Per ottenere questo effetto abbiamo utilizzato while che esegue mysql_fetch_array ripetutamente finché ci saranno righe da visualizzare. Da notare che se il nostro database contiene meno di cinque articoli, non abbiamo nessun problema, né per quanto riguarda la query, né per la visualizzazione. In seguito dovremo specificare in un blocco cosa vogliamo fare con la riga selezionata, prima di passare alla successiva:

{
echo “<a href=\”;view.php?id=$row[id]\”>” . date(“j/n/y”, $row[data]) . ” – $row[titolo]</a><br>”;
}

Il blocco può sembrare complicato, ma in realtà non presenta grandi difficoltà. Prima di spiegarlo nel dettaglio, notiamo che i valori dei tre campi selezionati sono memorizzati nell’array $row.

<a href=\”view.php?id=$row[id]\”> questa parte crea il link che permette all’utente di cliccare sul titolo per poter leggere tutto il contenuto. Questo link porta alla pagina view.php, che creeremo in seguito, passandogli come parametro l’id dell’articolo. Questo valore cambia da articolo ad articolo, quindi dovremo leggerlo dal database. Per questo abbiamo specificato nella query che ci interessava conoscere anche l’id dell’articolo. Quindi lo stampiamo sotto forma di $row[id].
date(“j/n/y”, $row[data]) è una funzione Php che in base a una data in timestamp (nel nostro caso memorizzato in $row[data] crea la data nel formato g/m/aa. Questa la visualizziamo accanto al titolo.
– $row[titolo]</a><br> dopo aver inserito un delimitatore (nel nosto caso il meno -), visualizziamo il titolo, chiudiamo il tag del link e andiamo a capo.

Dopo aver visualizzato i cinque titoli, possiamo quindi chiudere la pagina:

mysql_close($db);
foot();
?>

A questo punto creeremo la pagina che ci permetterà di leggere i contenuti degli articoli.