Visualizzazione di un singolo post



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.

Ultimi articoli PHP

Sessioni PHP: cosa sono, come si usano

Dalla configurazione di PHP, alla gestione delle sessioni in un...

Continuous Integration: automatizziamo i client con Phing

Continuous Integration: automatizziamo i client con Phing. Esempi...

Archiviazione delle applicazioni PHP con Phar

Come incorporare intere applicazioni PHP all'interno di un singolo...

I traits in PHP 5.4

Cosa sono, a cosa servono e come si unsano i traits, la novità per...

PHP 5.4: il web server integrato

Impara ad usare il web server integrato nella versione 5.4 di PHP:...

Altri articoli

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti