generatore-pagina.html
Mostra il modulo per generare le pagine, quando compilato invia i dati a generatore.php. Potrai personalizzarla in seguito con stili ed altri elementi.
Codice HTML:
<form action="generatore.php" method="POST">
<input type="text" name="title" placeholder="Titolo">
<input type="text" name="subtitle" placeholder="Sottotitolo">
<input type="text" name="image-url" placeholder="URL immagine di sfondo">
<textarea name="form-code" placeholder="Codice per un eventuale modulo"></textarea>
<textarea name="main-text" placeholder="Corpo del testo centrale"></textarea>
<input type="text" name="font-name" placeholder="Nome font">
<input type="text" name="font-color" placeholder="Colore font">
<textarea name="footer" placeholder="Footer"></textarea>
<button type="submit">Genera</button>
</form>
generatore.php
Riceve i dati per la creazione di una pagina e li memorizza nella base di dati. Questo è solo lo scheletro, va resa sicura tramite opportuni controlli sull'input.
Codice PHP:
<?php
error_reporting(E_ALL);
// Checks input (to do!)
$title = $_POST['title'];
$subtitle = $_POST['subtitle'];
$image_url = $_POST['image-url'];
$form_code = $_POST['form-code'];
$main_text = $_POST['main-text'];
$font_name = $_POST['font-name'];
$font_color = $_POST['font-color'];
$footer = $_POST['footer'];
// Connects to database
$dbh = new PDO('mysql:host=localhost;dbname=my_podset', 'podset', null);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Writes data
$query = "INSERT INTO page(title, subtitle, image_url, form_code, main_text, font_name, font_color, footer)"
. " VALUES(:title, :subtitle, :image_url, :form_code, :main_text, :font_name, :font_color, :footer)";
$sth = $dbh->prepare($query);
$sth->execute([
':title' => $title,
':subtitle' => $subtitle,
':image_url' => $image_url,
':form_code' => $form_code,
':main_text' => $main_text,
':font_name' => $font_name,
':font_color' => $font_color,
':footer' => $footer
]);
echo "New page created. ID = " . $dbh->lastInsertId() . ".";
$dbh = null;
?>
pagina.php
Recupera le informazioni dalla base di dati e costruisce dinamicamente la pagina da mostrare. Richiede che le sia passato l'identificatore della pagina tramite GET.
Codice PHP:
<?php
error_reporting(E_ALL);
// Connects to database
$dbh = new PDO('mysql:host=localhost;dbname=my_podset', 'podset', null);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Reads page data
$page_id = $_GET['id'];
$query = "SELECT * FROM page WHERE id = :id";
$sth = $dbh->prepare($query);
$sth->execute([':id' => $page_id]);
$page_data = $sth->fetch();
if (!$page_data) {
die("Errore: la pagina con id $page_id non esiste.");
}
$dbh = null;
?>
<!-- Shows page -->
<html>
<head>
<style>
body {
background-image: url(<?= $page_data['image_url']; ?>);
font-face: <?= $page_data['font-name']; ?>
color: <?= $page_data['font-color']; ?>
}
</style>
</head>
<body>
<h1><?= $page_data['title'] ?></h1>
<h2><?= $page_data['subtitle'] ?></h2>
<div>
<?= $page_data['form-code']; ?>
</div>
<main>
<?= $page_data['main_text']; ?>
</main>
<footer>
<?= $page_data['footer']; ?>
</footer>
</body>
</html>
Tabella page
Rappresenta una singola pagina.
Codice:
CREATE TABLE page (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
subtitle VARCHAR(255) NOT NULL,
image_url VARCHAR(255) NOT NULL,
form_code TEXT,
main_text TEXT NOT NULL,
font_name VARCHAR(255) NOT NULL,
font_color VARCHAR(255) NOT NULL,
footer TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()
);
Verifica che non ci siano errori di sintassi o simili, possono sempre sfuggire.