martedì 4 novembre 2025

Corso di PHP: 10 – PHP e Database (MySQL)

10 – PHP e Database (MySQL)

Obiettivi

  • Comprendere i fondamenti dei database relazionali.

  • Collegare PHP a un database MySQL.

  • Eseguire query SQL di base per gestire dati.

  • Creare un’applicazione web che utilizza un database per la persistenza.


Contenuti

🔹 Introduzione a MySQL e phpMyAdmin

  • MySQL è un DBMS relazionale molto diffuso per applicazioni web.

  • I dati sono organizzati in tabelle composte da righe (record) e colonne (campi).

  • phpMyAdmin è un’interfaccia grafica web che permette di gestire facilmente database, tabelle e query.

  • Comandi principali in SQL:

    • CREATE DATABASE nome; → crea un nuovo database.

    • CREATE TABLE utenti (...); → crea una tabella.


🔹 Connessione al Database con PHP

Esistono due principali approcci:

  1. mysqli (MySQL Improved)

<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "rubrica";

// Connessione procedurale
$conn = mysqli_connect($host, $user, $pass, $dbname);

if (!$conn) {
    die("Connessione fallita: " . mysqli_connect_error());
}
echo "Connessione avvenuta con successo!";
?>
  1. PDO (PHP Data Objects) – più flessibile e sicuro:

<?php
try {
    $conn = new PDO("mysql:host=localhost;dbname=rubrica", "root", "");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connessione avvenuta con successo!";
} catch (PDOException $e) {
    echo "Errore: " . $e->getMessage();
}
?>

🔹 Query SQL di Base

  • Inserimento dati

$sql = "INSERT INTO contatti (nome, telefono) VALUES ('Mario Rossi', '3331234567')";
mysqli_query($conn, $sql);
  • Selezione dati

$sql = "SELECT * FROM contatti";
$result = mysqli_query($conn, $sql);

while ($row = mysqli_fetch_assoc($result)) {
    echo $row['nome'] . " - " . $row['telefono'] . "<br>";
}
  • Aggiornamento dati

$sql = "UPDATE contatti SET telefono='3337654321' WHERE nome='Mario Rossi'";
mysqli_query($conn, $sql);
  • Eliminazione dati

$sql = "DELETE FROM contatti WHERE nome='Mario Rossi'";
mysqli_query($conn, $sql);

🔹 Esercizio: Rubrica Online con Database

Descrizione:
Creiamo una rubrica online con le seguenti funzionalità:

  • Aggiungere un contatto (nome e numero).

  • Visualizzare i contatti salvati.

  • Eliminare un contatto.

Struttura tabella MySQL:

CREATE TABLE contatti (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(50) NOT NULL,
    telefono VARCHAR(15) NOT NULL
);

index.php – Visualizza i contatti e form di inserimento:

<?php
$conn = mysqli_connect("localhost", "root", "", "rubrica");

// Inserimento nuovo contatto
if (isset($_POST['nome']) && isset($_POST['telefono'])) {
    $nome = $_POST['nome'];
    $telefono = $_POST['telefono'];
    $sql = "INSERT INTO contatti (nome, telefono) VALUES ('$nome', '$telefono')";
    mysqli_query($conn, $sql);
}

// Eliminazione contatto
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    $sql = "DELETE FROM contatti WHERE id=$id";
    mysqli_query($conn, $sql);
}

// Recupero contatti
$result = mysqli_query($conn, "SELECT * FROM contatti");
?>
<!DOCTYPE html>
<html>
<head>
    <title>Rubrica Online</title>
</head>
<body>
    <h2>Aggiungi Contatto</h2>
    <form method="POST">
        Nome: <input type="text" name="nome" required><br>
        Telefono: <input type="text" name="telefono" required><br>
        <button type="submit">Salva</button>
    </form>

    <h2>Rubrica</h2>
    <ul>
        <?php while($row = mysqli_fetch_assoc($result)) { ?>
            <li>
                <?php echo $row['nome'] . " - " . $row['telefono']; ?>
                <a href="?delete=<?php echo $row['id']; ?>">❌</a>
            </li>
        <?php } ?>
    </ul>
</body>
</html>

📝 Test di Verifica

  1. Qual è la differenza tra mysqli e PDO?

  2. Scrivi la query SQL per aggiornare il numero di telefono di un contatto con id=3.

  3. Qual è il vantaggio di usare phpMyAdmin?

  4. Come si definisce una tabella in SQL?

  5. Cosa succede se non si sanitizzano gli input nei form che interagiscono con il database?


Nessun commento:

Posta un commento

Corso Fondamenti di Informatica e Reti: 6 Reti di computer e Internet

Reti di computer e Internet Introduzione Prova a pensare alla vita quotidiana senza reti informatiche: niente messaggi WhatsApp, niente m...