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

Visualizzazione di un singolo post

La pagina dedicata alla visualizzazione del singolo post dopo il clic in homepage
La pagina dedicata alla visualizzazione del singolo post dopo il clic in homepage
Link copiato negli appunti

L'output della homepage del blog d'esempio prevede la creazione di una lista di anteprime dei testi relativi ai post; in coda ad ogni anteprima vi è un link associato alla descrizione "Articolo completo" che funge da collegamento alla pagina che presenta il testo integrale del post selezionato; ciò è possibile perché il link prevede una querystring all'interno della quale è stato inserito l'identificativo univoco del post in anteprima (post.php?id_post=$id_post), ad esempio: post.php?id_post=1 permetterà di visualizzare nella pagina post.php il testo integrale del post che in tabella ha come identificativo univoco il valore "10", per cui nel record il valore inserito nel campo id_post sarà appunto "10".

Di seguito viene proposto il codice necessario per la visualizzazione dei singoli post con tanto di testo dell'articolo riprodotto integralmente:

<?php
// controllo sulla variabile inviata per querystring
if( (!isset($_GET['id_post'])) || (!is_numeric($_GET['id_post'])) )
{
// reindirizzamento del browser nel caso in cui la variabile non venga validata
header("Location: index.php");
}else{
$id_post = $_GET['id_post'];
}
?>
<html>
<head>
<title>MioBlog</title>
</head>
<body>
<?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 WHERE id_post = $id_post");
// controllo sulla presenza in tabella del record corrispondente dell'id richiesto
if(mysql_num_rows($post_sql) > 0){
  // estrazione dei record
    $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 "<h1>".$titolo_post."</h1>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";
        echo "<p>".$testo_post."</p>n"; 
        echo " :: <a href="commenti.php?id_post=$id_post">Inserisci un commento</a>n";
        echo  "<br />n";
}else{
  // notifica in assenza di record
  echo "Non esiste alcun post per questo id.";
}
// chiusura della connessione a MySQL
$data->disconnetti();
?>
</body>
</html>

La pagina controlla che il parametro di input inviato in querystring sia valido, esso infatti deve essere impostato (cioè deve essere definito e quindi "esistere") e deve essere numerico, altrimenti non verrà ritenuto valido e il browser subirà un rindirizzamento alla homepage; naturalmente PHP mette a disposizione strumenti più raffinati per la validazione delle querystring e dei loro contenuti, il discorso però allontanerebbe dal tema centrale di questa trattazione e nella sezione PHP di HTML.it sono già presenti numerosi articoli e guide in materia.

Il parametro inviato per querystring verrà associato come valore ad una variabile che né conserverà l'informazione e verrà utilizzata all'interno dell'istruzione necessaria per l'interrogazione Sql SELECT * FROM post WHERE id_post = $id_post; $id_post rappresenterà qualsiasi valore numerico presente in tabella, se per esempio alla variabile dovesse corrispondere il valore "10", allora l'istruzione che verrà lanciata al DBMS sarà la seguente SELECT * FROM post WHERE id_post = 10.

La funzione mysql_num_row() permetterà di controllare che nella tabella sia presente un record con identificativo univoco di valore pari a quello della variabile $id_post e, solo in caso di esito positivo, verrà richiamata la funzione estrai() per la visualizzazione dei valori contenuti nel record selezionato.

In questo caso il risultato di estrai() non dovrà essere utilizzato come condizione di un ciclo while in quanto l'identificativo è, appunto, univoco, quindi ad esso può corrispondere soltanto un unico record.

Ti consigliamo anche