info@nebulosaweb.com

Realizzare una semplice bacheca messaggi in PHP

Un buon esercizio per chi è alle prime armi col PHP può essere quello di creare una bacheca perché questa concilia la trasmissione di dati tramite form, l’elaborazione via php e il salvataggio nel database MySql.

La prima cosa di cui abbiamo bisogno è il form che sarà composto dai classici campi “Nome”, “Mail” e “Messaggio”.
Salvatelo in un file chiamato form.php.

<form method="post" action="">
    <label for="name">Nome</label>
    <input type="text" name="name" id="name"/>
    <label for="mail">Email</label>
    <input type="text" name="mail" id="mail"/>
    <label for="message">Messaggio</label>
    <textarea rows="5" cols="40" name="message" id="message"></textarea>
    <input type="submit" value="Invia"/>
</form>

A questo punto accedete al phpMyAdmin (o analogo programma) del vostro sito e create la tabella “Bacheca”.
I campi della tabella nesessari sono ID che dovrà essere di tipo integer, impostato su auto increment e unica, NOME e MAIL di tipo varchar, MESSAGGIO di tipo text e DATA di tipo timestamp.

Adesso che abbiamo la tabella possiamo procedere alla realizzazione dello script che si occuperà di salvare i dati del form sul database. Tale script è divisibile in due parti, la prima effettua un controllo sui dati immessi e la seconda si occupa del salvataggio dei dati nella tabella.

//Controllo dati
$error= "";
 
if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome
    $nome = strip_tags($_POST['name']);
}
elseif(isset($_POST['name'])){
    $error .= "Nome mancante.<br />";
}
 
if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido
    $mail = $_POST['mail'];
}
elseif(isset($_POST['mail'])){
    $error .= "Email mancante o non valida.<br />";
}
  
if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio
    $messaggio = strip_tags($_POST['message']);
}
elseif(isset($_POST['message'])){
    $error .= "Inserire un messaggio.<br/>";
}

Lo script riportato sopra verifica se i dati inviati tramite il form sono presenti e in un formato giusto, in caso contrario restituisce un messaggio di errore.

//Salvataggio messaggio
if(isset($nome,$mail,$messaggio)){
	//Parametri del database
	$db_host = "localhost";
	$db_user = "root";
	$db_password = "";
	
	//Inizio Connessione al DB
	$db = mysql_connect($db_host, $db_user, $db_password);

	$err_database = mysql_error()."<p>Errore di accesso al database. Riprovare pi&ugrave; tardi, nel caso, contattare il web master</p>";

	$database = "nome_database";
	$db_bacheca = "Bacheca";
	
	$db_select = mysql_select_db($database, $db) or die ($err_database);
	
	//Invio dati al database
	$insert = mysql_query("INSERT INTO ".$db_bacheca." (NOME,MAIL,MESSAGGIO) VALUES ('".$nome."','".$mail."','".$messaggio."')") or die ($err_database);
	mysql_close();
}
else{
    echo "<p>".$error."</p>";
}

La seconda parte dello script comprende il codice necessario ad avviare una connessione al database (ricordate di cambiare i dati) e successivamente la funzione che permette il salvataggio dei dati in esso.
Salvate entrambe le parti in un unico file chiamato invioMess.php,

A questo punto ciò che manca è lo script che estrae i dati e li stampa a video mediante un ciclo while che chiameremo estrazione.php.

$bacheca = mysql_query("SELECT * FROM ".$db_bacheca." ORDER BY DATA DESC") or die ($err_database);
 
$n = 0;
$max = 10;
 
while($estrazione = mysql_fetch_array($bacheca) and $n < $max){
    echo"
		<div>
			<p>".$estrazione['MESSAGGIO']."<br/>
			Autore: ".$estrazione['NOME']."<br/>
			Data: ".date('d/m/Y',$estrazione['DATA'])."</p>
		</div>
	";
    $n++;
}

La variabile $max corrisponde al numero massimo di messaggi da mostrare, in questo caso 10 ma potete settare un qualsiasi numero. Il ciclo while scorre l’array $estrazione generato estrapolando i dati dal database finché questo ne restituisce o finché la variabile $n non supera il valore massimo impostato tramite $max.

Costruiti tutti i pezzi non resta che metterli insieme nel modo giusto mostrato di seguito.

<head>
    <style type="text/css">
        /*CSS*/
    </style>
    <title>Bacheca</title>
</head>
<body>
    <?php 
		include('invioMess.php'); 
		include('estrazione.php'); 
		include('form.php'); 
    ?>
</body>

L’esempio riportato è molto basilare ma una volta compreso i meccanismi sarà semplice adattarlo a tutte le vostre esigenze.
Sulla scia di questo esercizio potete ad esempio cimentarvi nella realizzazione di un pannello amministrativo per gestire i messaggi inseriti.
E’ buona cosa, nel caso di form accessibili senza login l’implementazione di un captcha per ridurre al minimo lo spam.

Autore: Fabio Di Stasio

Web Designer Freelance specializzato in sviluppo web, realizzazione di template responsive, creazione di temi e plugin WordPress e purista degli standard W3C.