La visualizzazione del dettagli di un articolo è molto semplice e consiste nella selezione dei dati specifici di un articolo in base ad un parametro passato come argomento alla pagina (l'id dell'articolo).
<?php
$mysql = new mysqli('localhost', 'root', '', 'html_it_articles');
if(!$mysql)
{
die("Errore di connessione al database, impossibile procedere");
}
if(!isset($_GET['id']))
{
header('Location: index.php');
}
$article = $mysql->query("
SELECT
AR.id AS id,
AR.title AS title,
AR.article AS content,
CONCAT(AU.surname, ' ', AU.name) AS author
FROM
articles AR,
authors AU
WHERE
AR.author_id = AU.id AND
AR.id = ".$_GET['id'])->fetch_assoc();
?>
<html>
<head>
<title>Articolo (<?php echo $article['id']; ?>)</title>
</head>
<body>
<ul>
<li><a href="index.php">Lista articoli</a></li>
<li><a href="insert.php">Inserisci un articolo</a></li>
</ul>
<h3><?php echo $article['title']; ?></h3>
<i><?php echo $article['author']; ?></i>
<p>
<?php echo $article['content']; ?>
</p>
</body>
</html>
Anche processo di inserimento di un articolo è molto semplice: lasceremo selezionare all'utente l'autore, specificare un titolo ed un testo e salveremo tutto nella tabella creata in precedenza rindirizzando la navigazione alla pagina principale.
Ecco il codice necessario:
<?php
$mysql = new mysqli('localhost', 'root', '', 'html_it_articles');
if(!$mysql)
{
die("Errore di connessione al database, impossibile procedere");
}
if(isset($_POST['action']) and $_POST['action'] == 'insert')
{
$mysql->query("INSERT INTO articles VALUES ('', '".$_POST['author']."', '".addslashes($_POST['title'])."', '".addslashes($_POST['article'])."')");
header('Location: index.php');
}
$authors = $mysql->query("SELECT id, CONCAT(surname, ' ', name) AS fullname FROM authors ORDER BY surname ASC");
?>
<html>
<head>
<title>Inserimento articolo</title>
</head>
<body>
<ul>
<li><a href="index.php">Lista articoli</a></li>
<li><a href="insert.php">Inserisci un articolo</a></li>
</ul>
<h3>Inserisci un articolo</h3>
<form action="" method="post">
<input type="hidden" name="action" value="insert" />
<label>Autore:</label> <select name="author">
<?php
while($author = $authors->fetch_assoc())
{
echo "<option value=".$author['id'].">".$author['fullname']."</option>";
}
?>
</select><br />
<label>Titolo:</label> <input type="text" name="title" size="55"/><br />
<label>Text:</label><br />
<textarea name="article" rows="6" cols="60"></textarea><br />
<input type="submit" value="Salva" />
</form>
</body>
</html>
L'unica cosa su cui fare attenzione è il fatto che il form rimanda alla stessa pagina (non avendo specificato alcuna action) e che quindi dobbiamo scrivere del codice che ci permetta di sapere se sono stati inviati dei dati in post ed in caso affermativo salvi i dati su database.
Ricordatevi che è fondamentale controllare i dati che arrivano in input in modo da non rischiare di incorrere in attacchi di injection o problemi di visualizzazione dovuti ad input scorretto. Nel mio esempio non ho fatto alcun controllo del genere, ma è molto importate nelle applicazioni reali se si vogliono evitare problemi.