Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

L'inserimento di un articolo e la visualizzazione del dettaglio

Come gestire i dati degli articoli: visualizzazione e inserimento di un nuovo record
Come gestire i dati degli articoli: visualizzazione e inserimento di un nuovo record
Link copiato negli appunti

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.


Ti consigliamo anche