Creiamo la pagina news.php
per iniziare a testare la nostra classe all'opera. Includiamo quindi la connessione al database che sarà contenuta in un file esterno e la definizione della nostra classe:
require_once('include/mysql.pdo.php');
require_once('lib/myCms.class.php');
La connessione al database non conterrà i dati di accesso, questi invece saranno salvati in un apposito file di configurazione:
include("config.php");
$connectionDb = "mysql:host=$host;dbname=$db_name";
try {
$db = new PDO($connectionDb , "$db_user", "$db_psw");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'Attenzione errore: '.$e->getMessage().' - '.$e->errorInfo.' - '.$e->getCode().' '.$e->getTraceAsString();
}
Il file di configurazione sarà sarà scritto in questo modo con le classiche quattro variabili di connessione:
$host = "localhost";
$db_user = "root";
$db_psw = "";
$db_name = "guida";
Procediamo con la lettura delle variabili che arrivano via querystring:
$id = 0;
if(isset($_REQUEST['id'])){$id=$_REQUEST['id'];}
$azione='';
if(isset($_GET['azione'])){$azione=$_GET['azione'];}
La variabile $id
sarà presente nei link al dettaglio, alla modifica e all'eliminazione, mentre l'azione sarà ciò che permetterà di stabilire cosa fare. Instanziamo la classe e settiamo le due proprietà dell'oggetto:
$myCms = new myCms();
$myCms->id=$id;
$myCms->tipo = 'news';
Non sarebbe una cattiva idea aver definito come public
il metodo per sanificare i numeri interi in modo da poterlo usare prima dell'assegnazione:
$id = $myCms->sanitize_int($id);
Predisponiamo uno switch per richiamare il metodo crea_lista()
in base al valore della variabile $azione
:
switch($azione){
case 'lista':
$contenuto=$myCms->crea_lista();
break;
default:
$contenuto=$myCms->crea_lista();
break;
}
Nel nostro caso la stringa HTML verrà memorizzata in una variabile $contenuto
che stamperemo nella pagina:
<html>
<head>
<meta charset="utf-8" />
<title>CMS: News</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
</head>
<body>
<div id="contenitore" class="container">
<div id="header"><?php include('include/header.php');?></div>
<div id="menu"><?php include('include/menu.php');?></div>
<div id="contenuto"><?php echo $contenuto; ?></div>
<div id="footer"><?php include('include/footer.php');?></div>
</div>
<script type="text/javascript" src="js/jquery-2.2.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</body>
</html>
L'HTML è estremamente sintetico, contiene solo i riferimenti a Bootstrap. Una buona idea potrebbe essere quella di condividere le componenti HTML fra le varie pagine tramite inclusioni esterni in modo da facilitare la manutenzione.
A questo punto caricando la pagina news.php
verrà visualizzata la tabella con l'elenco delle news presenti, per il momento la pulsantiera non è ancora attiva e sarà la prossima funzionalità che verrà sviluppata.