Come realizzare una pagina dinamica con PHP e MySQL

Una pagina web dinamica è una pagina il cui contenuto può variare in base all’interazione dell’utente, alle informazioni presenti in un database o ad altri fattori esterni. PHP è un linguaggio di scripting lato server che permette di creare pagine web dinamiche, mentre MySQL è un sistema di gestione di database relazionali che consente di memorizzare e recuperare dati in modo efficiente. Insieme, PHP e MySQL rappresentano una combinazione potente e ampiamente utilizzata per lo sviluppo di applicazioni web dinamiche.

Sviluppo dell’argomento

1. Configurazione dell’ambiente di sviluppo

Prima di iniziare a creare pagine dinamiche, è necessario configurare un ambiente di sviluppo adeguato:

  • Server web: È necessario un server web come Apache o Nginx per elaborare le richieste HTTP.
  • PHP: Installare PHP (versione 7.4 o superiore consigliata).
  • MySQL: Installare un server MySQL per la gestione dei dati.
  • Tool di amministrazione: PHPMyAdmin o altro strumento per gestire facilmente il database MySQL.

Per semplificare, potete utilizzare pacchetti preconfigurati come XAMPP, WAMP o MAMP che includono tutti questi componenti.

2. Creazione del database e delle tabelle

Il primo passo per costruire una pagina dinamica è progettare e creare il database che conterrà i dati da visualizzare:

  • Definire lo schema del database (tabelle, campi, relazioni)
  • Creare il database in MySQL
  • Impostare le tabelle necessarie con i relativi campi
  • Definire le chiavi primarie e le relazioni tra tabelle

3. Connessione a MySQL tramite PHP

Il codice PHP dovrà stabilire una connessione con il database MySQL:

<?php // Parametri di connessione $servername = "localhost"; $username = "nome_utente"; $password = "password"; $dbname = "nome_database"; // Creazione della connessione $conn = new mysqli($servername, $username, $password, $dbname); // Verifica della connessione if ($conn->connect_error) { die("Connessione fallita: " . $conn->connect_error); } echo "Connessione al database stabilita con successo"; ?>

4. Esecuzione di query e manipolazione dei dati

Una volta stabilita la connessione, possiamo eseguire query SQL per interagire con il database:

  • SELECT: Per recuperare dati
  • INSERT: Per aggiungere nuovi record
  • UPDATE: Per modificare record esistenti
  • DELETE: Per eliminare record

5. Visualizzazione dinamica dei dati

Il passo finale è visualizzare i dati recuperati nella pagina web:

  • Iterare sui risultati della query
  • Formattare i dati in HTML
  • Gestire casi speciali (nessun risultato, errori, ecc.)

Esempio 1: Lista di prodotti da un database

Lista prodotti dinamica

<?php // Connessione al database $servername = "localhost"; $username = "user"; $password = "password"; $dbname = "negozio"; // Crea connessione $conn = new mysqli($servername, $username, $password, $dbname); // Verifica connessione if ($conn->connect_error) { die("Connessione fallita: " . $conn->connect_error); } // Query per selezionare tutti i prodotti $sql = "SELECT id, nome, descrizione, prezzo FROM prodotti ORDER BY nome"; $result = $conn->query($sql); // Creazione della pagina HTML ?> <!DOCTYPE html> <html lang="it"> <head> <meta charset="UTF-8"> <title>Catalogo Prodotti</title> <style> body { font-family: Arial, sans-serif; margin: 20px; } h1 { color: #333; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; } tr:nth-child(even) { background-color: #f9f9f9; } .prezzo { font-weight: bold; color: #007bff; } </style> </head> <body> <h1>Catalogo Prodotti</h1> <?php // Verifica se ci sono risultati if ($result->num_rows > 0) { echo "<table>"; echo "<tr><th>ID</th><th>Nome</th><th>Descrizione</th><th>Prezzo</th></tr>"; // Output dei dati di ogni riga while($row = $result->fetch_assoc()) { echo "<tr>"; echo "<td>" . $row["id"] . "</td>"; echo "<td>" . $row["nome"] . "</td>"; echo "<td>" . $row["descrizione"] . "</td>"; echo "<td class='prezzo'>" . number_format($row["prezzo"], 2, ',', '.') . " €</td>"; echo "</tr>"; } echo "</table>"; } else { echo "<p>Nessun prodotto disponibile nel catalogo.</p>"; } // Chiudi connessione $conn->close(); ?> </body> </html>

Esempio 2: Modulo di ricerca con risultati dinamici

Form di ricerca dinamica

<?php // Inizializzazione variabili $termineRicerca = ""; $risultati = null; $errore = ""; // Connessione al database (solo se viene effettuata una ricerca) if ($_SERVER["REQUEST_METHOD"] == "POST") { // Recupera il termine di ricerca dal form $termineRicerca = $_POST["cerca"]; // Connessione al database $servername = "localhost"; $username = "user"; $password = "password"; $dbname = "negozio"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { $errore = "Errore di connessione al database: " . $conn->connect_error; } else { // Preparazione della query con prepared statement per prevenire SQL injection $sql = "SELECT id, nome, descrizione, prezzo FROM prodotti WHERE nome LIKE ? OR descrizione LIKE ?"; $stmt = $conn->prepare($sql); $param = "%" . $termineRicerca . "%"; $stmt->bind_param("ss", $param, $param); $stmt->execute(); $risultati = $stmt->get_result(); $stmt->close(); $conn->close(); } } ?> <!DOCTYPE html> <html lang="it"> <head> <meta charset="UTF-8"> <title>Ricerca Prodotti</title> <style> body { font-family: Arial, sans-serif; margin: 20px; } h1 { color: #333; } form { margin-bottom: 20px; } input[type="text"] { padding: 8px; width: 300px; } input[type="submit"] { padding: 8px 15px; background-color: #4CAF50; color: white; border: none; cursor: pointer; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; } th { background-color: #f2f2f2; } .error { color: #d9534f; } .results-count { margin-bottom: 10px; font-style: italic; } </style> </head> <body> <h1>Ricerca Prodotti</h1> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <input type="text" name="cerca" placeholder="Cerca prodotti..." value="<?php echo htmlspecialchars($termineRicerca); ?>" required> <input type="submit" value="Cerca"> </form> <?php if ($errore): ?> <p class="error"><?php echo $errore; ?></p> <?php endif; ?> <?php if ($risultati !== null): ?> <div class="results-count"> <?php echo $risultati->num_rows; ?> risultati trovati per "<?php echo htmlspecialchars($termineRicerca); ?>" </div> <?php if ($risultati->num_rows > 0): ?> <table> <tr> <th>Nome</th> <th>Descrizione</th> <th>Prezzo</th> </tr> <?php while($row = $risultati->fetch_assoc()): ?> <tr> <td><?php echo htmlspecialchars($row["nome"]); ?></td> <td><?php echo htmlspecialchars($row["descrizione"]); ?></td> <td><?php echo number_format($row["prezzo"], 2, ',', '.'); ?></td> </tr> <?php endwhile; ?> </table> <?php else: ?> <p>Nessun prodotto corrisponde alla tua ricerca.</p> <?php endif; ?> <?php endif; ?> </body> </html>

Attività interattive

Attività 1: Creazione di una pagina per aggiungere nuovi prodotti

Progetta e implementa un modulo HTML e uno script PHP che permetta di inserire nuovi prodotti nel database. Il modulo dovrebbe includere:

  • Nome del prodotto
  • Descrizione
  • Prezzo
  • Categoria (da selezionare da una lista di categorie esistenti nel database)
  • Pulsante di invio

Assicurati di:

  1. Validare i dati inseriti (sia lato client che lato server)
  2. Prevenire SQL injection utilizzando prepared statements
  3. Fornire feedback all’utente dopo l’operazione (successo o errore)
  4. Reindirizzare l’utente alla lista prodotti dopo un inserimento riuscito

Attività 2: Miglioramento della pagina di ricerca

Migliora la pagina di ricerca dell’esempio 2 aggiungendo le seguenti funzionalità:

  1. Filtri per categoria
  2. Ordinamento dei risultati (per prezzo crescente/decrescente, per nome)
  3. Paginazione dei risultati (visualizzare 10 risultati per pagina)
  4. Possibilità di visualizzare i dettagli di un prodotto cliccando sul suo nome

Conclusione

Abbiamo visto come creare pagine web dinamiche utilizzando PHP e MySQL, partendo dalla configurazione dell’ambiente di sviluppo fino alla creazione di pagine interattive che recuperano e visualizzano dati da un database. I concetti chiave che abbiamo esplorato includono:

  • Configurazione dell’ambiente di sviluppo;
  • Creazione e gestione di database MySQL;
  • Connessione a MySQL tramite PHP;
  • Esecuzione di query SQL;
  • Visualizzazione dinamica dei dati in una pagina web;
  • Implementazione di funzionalità interattive come moduli di ricerca.

Per approfondire questi argomenti, consiglio le seguenti risorse:

  1. Documentazione ufficiale PHPphp.net
  2. Documentazione MySQLdev.mysql.com
  3. PHP: The Right Wayphptherightway.com
  4. Libro “Learning PHP, MySQL & JavaScript” di Robin Nixon
  5. Corso online su Udemy o Coursera: “PHP and MySQL Web Development”

E’ sempre bene tenere a mente che la sicurezza è fondamentale nello sviluppo web. Dunque il mio consiglio è quello di utilizzare sempre prepared statements per le query SQL, di implementare metodologie di validazioni adeguate e di applicare le migliori strategie pratiche di sicurezza per proteggere i vostri dati e i vostri utenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Translate »
Torna in alto