Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 50 di 56
  • livello intermedio
Indice lezioni

Visualizzazione dei post nella homepage

Come visualizzare tutti i post inseriti nella pagina principale del blog
Come visualizzare tutti i post inseriti nella pagina principale del blog
Link copiato negli appunti

Per la visualizzazione dei post in homepage non sarà necessario creare funzioni aggiuntive; nella prima pagina del blog verranno visualizzati i dati dei post scritti fino al momento corrente compresa un'anteprima del testo completo relativo ad ogni articolo, per comodità del lettore ogni anteprima sarà seguita dal classico collegamento alla pagina che permetterà di leggere il testo integrale del post, in questo modo si eviterà di generare un'homepage troppo lunga da scorrere e gli utenti potranno avere informazioni sufficienti per decidere se proseguire o meno con la lettura degli articoli.

Di seguito viene proposto il codice necessario per la visualizzazione dei post in homepage:

<html>
<head>
<title>MioBlog</title>
</head>
<body>
<h1>MioBlog: realizzato in PHP e MySQL</h1>
<?php
// inclusione del file di classe
include "funzioni_mysql.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();
// query per l'estrazione dei record
$post_sql = $data->query("SELECT * FROM post ORDER BY data_post DESC");
// controllo sul numero di records presenti in tabella
if(mysql_num_rows($post_sql) > 0){
  // estrazione dei record tramite ciclo
  while($post_obj = $data->estrai($post_sql)){
    $id_post = $post_obj->id_post;
    $titolo_post = stripslashes($post_obj->titolo_post);
    $testo_post = stripslashes($post_obj->testo_post);
    $autore_post = stripslashes($post_obj->autore_post);
    $data_post = $post_obj->data_post;
       
    // visualizzazione dei dati
    echo "<h2>".$titolo_post."</h2>n";
    echo  "Autore <b>". $autore_post . "</b>n";
    echo  "<br />n";
    echo  "Pubblicato il <b>" . $data->format_data($data_post) . "</b>n";
    echo  "<br />n";
        // collegamento al testo completo del post
    $leggi_tutto = "<br /><a href="post.php?id_post=$id_post">Articolo completo</a>n";
        // anteprima del testo
    
        echo "<p>".$data->preview($testo_post, 50, $leggi_tutto)."</p>n"; 
    echo "<hr>n";
  } 
}else{
  // notifica in assenza di record in tabella
  echo "Per il momento non sono disponibili post.";
}
// chiusura della connessione a MySQL
$data->disconnetti();
?>
</body>
</html>

Per ottenere l'output desiderato, è stata passata come argomento alla funzione personalizzata query() l'istruzione Sql SELECT * FROM post ORDER BY data_post DESC, che "tradotta" in linguaggio umano significa: "seleziona tutti i record presenti nella tabella post e ordinali sulla base dei valori contenuti nel campo data_post disposti in ordine discendente, dall'ultimo al primo per data di scrittura". DESC infatti è una delle due clausole che è possibile associare al comando ORDER BY di SQL e consente di visualizzare dei valori partendo dal maggiore (o nel caso specifico, dal più recente) fino ad estrarre come ultimo record quello corrispondente al valore minore; l'ordinamento contrario, cioè a partire dal valore inferiore, è ottenibile sostituendo DESC con ASC.

La stessa query avrebbe potuto coinvolgere soltanto uno specifico numero di record, ad esempio soltanto quelli corrispondenti agli ultimi dieci post pubblicati, utilizzando una particolare clausola chiamata LIMIT, in questo caso l'istruzione sarebbe stata la seguente: SELECT * FROM post ORDER BY data_post DESC LIMIT 10; ma sarebbe stato anche possibile estrarre soltanto i record validi per un determinato intervallo di valori, ad esempio, l'istruzione SELECT * FROM post ORDER BY data_post DESC LIMIT 5,10; avrebbe consentito la visualizzazione dei record che disposti in senso cronologico crescente avessero occupato le posizioni ricompresse tra la quinta e la decima.

Si noti inoltre, come il risultato dell'applicazione della funzione query() sull'istruzione SQL sia stato si passato alla funzione estrai() quale condizione di un ciclo while, ciò è stato necessario perché i record contenuti all'interno della tabella possono essere più di uno, quindi ognuno di essi dovrà essere visualizzato tramite una diversa iterazione del ciclo fino a quando non venga più soddisfatta la condizione prevista per esso e tutti i risultati non siano stati mostrati a video.

Ti consigliamo anche