Context engineering

Immagine
  Negli ultimi mesi, chi lavora con i modelli linguistici ha iniziato a notare uno spostamento sottile ma significativo: il problema non è più cosa scrivere nel prompt , ma cosa mettere nel contesto . È la differenza tra dare un'istruzione ben formulata e costruire l'intero ambiente informativo in cui un modello deve operare — memoria, strumenti, cronologia, vincoli, stato del sistema. Si parla ormai apertamente di context engineering come disciplina distinta dal prompt engineering, e la distinzione non è solo terminologica. 🔹 1. Il prompt come istruzione, il contesto come ambiente Un prompt ben scritto ottimizza una singola interazione. Il contesto, invece, è tutto ciò che il modello "vede" prima di rispondere: documenti recuperati, risultati di strumenti, conversazioni pregresse, regole di sistema, persino la cronologia di errori già commessi in quella sessione. Con l'adozione crescente di agenti che lavorano su compiti lunghi — scrivere codice, orchestrare...

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?


Commenti

Post popolari in questo blog

Corso di Programmazione Strutturata e OOP: 3 Ereditarietà incapsulamento polimorfismo

Corso di CSS & Web Design: 3 – Box Model e spaziature

Corso di CSS & Web Design: 7 – Responsive Design