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

Il modulo per l'inserimento dei commenti

La creazione della pagina e dei moduli per inviare un commento ad un blog
La creazione della pagina e dei moduli per inviare un commento ad un blog
Link copiato negli appunti

I post nei blog non sono soltanto degli articoli informativi, ma anche degli spunti per i commenti e le discussioni degli utenti che in questo modo possono partecipare alla vita del sito Web; il meccanismo che sta alla base della parte di applicazione che presiede alla scrittura dei commenti è molto simile a quello già analizzato per la stesura dei post, con una importante differenza, infatti i commenti saranno visibili nel front-end in corrispondenza dei diversi articoli soltanto dopo essere stati "moderati" e quindi approvati dall'amministratore; il campo "approvato" della tabella "commenti", associato ad un tipo di dato ENUM, è stato creato appositamente per questo scopo in quanto accetta soltanto due valori: "0", che è poi il valore predefinito e "1".

Quando un utente posta un commento, il campo "approvato" viene automaticamente impostato su "0", a questo punto il commento sarà stato memorizzato nel database ma non sarà visibile in corrispondenza del relativo articolo; come si vedrà in seguito, infatti, la query SELECT dei commenti prevede di estrarre soltanto i commenti che hanno approvato = 1.

Per modificare il valore di "approvato" da "0" a "1" sarà necessario implementare l'applicazione in amministrazione aggiungendo una parte dedicata alla "moderazione dei commenti" che verrà analizzata a breve, per ora invece verrà mostrato il codice necessario al loro inserimento:

<?php
// inclusione del file di classe
include "funzioni_mysql.php";
// istanza della classe
$data = new MysqlClass();
// chiamata alla funzione di connessione
$data->connetti();

// valorizzazione delle variabili con i parametri dal form
if(isset($_POST['submit'])){
  if(!isset($_POST['autore']) || !isset($_POST['commento']) || !isset($_POST['post_id']) || !is_numeric($_POST['post_id']))
  {
   echo "Tutti i campi sono obbligatori";
  }else{   
    $autore = htmlentities(addslashes($_POST['autore']));
    $post_id = $_POST['post_id'];
    $commento = htmlentities(addslashes($_POST['commento']));

    $t = "commenti"; # nome della tabella
    $v = array ($post_id,$autore,$commento,date("Y-m-d")); # valori da inserire
    $r =  "id_post,autore_commento,testo_commento,data_commento"; # campi da popolare

   // chiamata alla funzione per l'inserimento dei dati
    $data->inserisci($t,$v,$r);
    header("Location: post.php?id_post=$post_id");
 }
}else{
  // controllo sull'id del post inviato per querystring
  if( isset($_GET['id_post']) && is_numeric($_GET['id_post']) ){
    $id_post = $_GET['id_post'];
    $sql_commenti = $data->query("SELECT id_post FROM post WHERE id_post='$id_post'");
    if(mysql_num_rows($sql_commenti) > 0){
      // viene visualizzato il form solo nel caso in cui l'unico dato inviato sia l'id del post
      ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Autore:<br />
<input name="autore" type="text"><br />
Commento:<br />
<textarea name="commento" cols="30" rows="10"></textarea><br />
<input name="post_id" type="hidden" value="<?php echo $id_post; ?>">
<input name="submit" type="submit" value="Invia">
</form>
      <?php
      // notifiche in caso di querystring vuota o non valida
    }else{
      echo "Non è possibile accedere alla pagina da questo percorso.";
    }
  }else{
    echo "Commenti non consentiti, articolo inesistente.";
  }
}
// disconnessione
$data->disconnetti();
?>
</body>
</html>

È possibile postare un commento a partire dalla homepage o da un singolo articolo, facendo clic sul collegamento chiamato Inserisci un commento; il click sul link produrrà una querystring che conserva al suo interno l'informazione relativa all'identificativo univoco dell'articolo che si desidera commentare, questo dato è fondamentale perché permette di popolare il campo post_id della tabella commenti per mettere in relazione post e commenti.

L'inserimento dei dati in tabella avviene grazie all'invio di due parametri (autore e commento) da valorizzare tramite un modulo che conserva come dato nascosto (hidden) anche l'identificativo univoco del post di riferimento; una volta compilato il modulo, l'effettivo invio dei parametri verrà controllato e, se l'esito dovesse essere positivo, questi verranno filtrati e utilizzati per definire delle variabili che andranno a popolare i campi della tabella commenti creando un nuovo record grazie alla funzione inserisci(); il campo denominato approvato relativo al nuovo record avrà associato il valore predefinito "0" e il commento non sarà visibile prima che questo non sia modificato in "1".

Si noti come il valore relativo al campo ENUM approvato sia posto tra singoli apici, apparentemente infatti sembrerebbe associato ad un dato numerico e invece si tratta di un valore che il DBMS vede come un carattere, quindi, rispettando la sintassi SQL prevista per MySQL esso non dovrà essere inserito in istruzione senza apici, come avverrebbe per i valori numerici, ma delimitato da essi.

Ti consigliamo anche