Modifica ed eliminazione dei libri della biblioteca | Aulab

GUIDE PER ASPIRANTI PROGRAMMATORI

Modifica ed eliminazione dei libri della biblioteca

Nel nostro progetto della biblioteca, la gestione dei libri non si limita alla semplice visualizzazione: sono già presenti e pienamente funzionanti le funzionalità per modificare ed eliminare ogni titolo direttamente dalla tabella di riepilogo. All’interno del file libri.php, ogni riga dell’elenco include due link: uno per modificare e uno per eliminare. Queste operazioni completano il…

Lezione 20 / 25
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Nel nostro progetto della biblioteca, la gestione dei libri non si limita alla semplice visualizzazione: sono già presenti e pienamente funzionanti le funzionalità per modificare ed eliminare ogni titolo direttamente dalla tabella di riepilogo. All’interno del file libri.php, ogni riga dell’elenco include due link: uno per modificare e uno per eliminare. Queste operazioni completano il ciclo CRUD, permettendo agli utenti di aggiornare o cancellare in modo dinamico le informazioni archiviate nel database. Approfondiamo entrambe le funzionalità.

Eliminazione dei libri.

L’eliminazione di un titolo specifico avviene tramite un link che invia una richiesta GET contenente l’ID del libro da cancellare. Il codice incluso in libri.php intercetta questa richiesta e la gestisce nel seguente modo:

if (isset($_GET['elimina'])) {
    $id = $_GET['elimina'];
    $stmt = $pdo->prepare("DELETE FROM libri WHERE id = ?");
    $stmt->execute([$id]);
    echo "<p>Libro eliminato con successo.</p>";
}

Questo frammento di codice verifica innanzitutto la presenza del parametro elimina nella stringa dell’URL, il che indica l’intenzione dell’utente di cancellare un libro specifico. Se tale parametro è presente, il codice estrae l’ID del libro e costruisce una query SQL che utilizza un segnaposto (?) per evitare che il valore venga concatenato direttamente nella stringa della query. In questo modo, l’interazione con il database avviene in totale sicurezza grazie all’uso della funzione prepare, che consente di prevenire vulnerabilità comuni come le SQL Injection.

Una volta eseguita la query attraverso il metodo execute, il database elimina in modo permanente il record associato all’ID passato. L’operazione si conclude con un messaggio a video che informa l’utente del buon esito della cancellazione. Questo tipo di feedback è importante per migliorare la user experience e mantenere l’utente consapevole delle modifiche effettuate.

Vale la pena notare che questa logica può essere facilmente estesa in futuro per includere conferme JavaScript prima della cancellazione, messaggi di avviso stilizzati con Bootstrap o addirittura una funzione di “eliminazione soft” che nasconde il libro senza rimuoverlo dal database.

Il collegamento corrispondente nel ciclo foreach è simile a:

<a href="libri.php?elimina=<?= $libro['id'] ?>">Elimina</a>

Modifica dei libri.

Anche la funzione di modifica è implementata nello stesso file, seguendo un approccio condizionale. Se nell’URL è presente il parametro modifica, il libro con quell’ID viene caricato e i suoi dati mostrati all’interno di un form HTML per la modifica:

if (isset($_GET['modifica'])) {
    $id = $_GET['modifica'];
    $stmt = $pdo->prepare("SELECT * FROM libri WHERE id = ?");
    $stmt->execute([$id]);
    $libroModifica = $stmt->fetch();
}

Il form è precompilato con i dati correnti del libro grazie all’utilizzo del valore value=”<?= htmlspecialchars($libroModifica[‘campo’]) ?>” per ciascun input. Questo metodo consente non solo di mostrare all’utente i dati attuali in modo chiaro, ma anche di facilitarne l’eventuale modifica senza il rischio di dover riscrivere tutto da capo. È una tecnica che migliora l’usabilità, soprattutto quando il numero di campi è elevato.

L’impiego della funzione htmlspecialchars è particolarmente importante in ottica di sicurezza: evita l’esecuzione involontaria di codice HTML o JavaScript potenzialmente malevolo, proteggendo l’applicazione da attacchi di tipo XSS (Cross-Site Scripting).

Inoltre, grazie a questa tecnica, il form di modifica diventa adattabile a qualsiasi dato proveniente dal database. In contesti più complessi, questa strategia può essere estesa con l’uso di funzioni PHP che generano dinamicamente l’intero set di input, rendendo il modulo scalabile e più semplice da mantenere nel tempo. Una volta modificati, i dati vengono inviati con POST, e il codice PHP li aggiorna nel database:

if (isset($_POST['update'])) {
    $stmt = $pdo->prepare("UPDATE libri SET titolo = ?, autore = ?, genere = ?, anno = ?, descrizione = ? WHERE id = ?");
    $stmt->execute([
        $_POST['titolo'],
        $_POST['autore'],
        $_POST['genere'],
        $_POST['anno'],
        $_POST['descrizione'],
        $_POST['id']
    ]);
    echo "<p>Libro modificato con successo.</p>";
}

L’interfaccia include anche un campo hidden con l’ID del libro da modificare. Questo campo, invisibile all’utente ma fondamentale per il funzionamento dell’applicazione, permette di mantenere il riferimento preciso all’elemento selezionato nel database. In questo modo, il sistema è in grado di distinguere esattamente quale record aggiornare anche quando vengono gestiti più elementi contemporaneamente. L’utilizzo di un campo hidden è una tecnica comune nei form dinamici e contribuisce a rendere più affidabile la logica di aggiornamento.

Completa il paradigma CRUD con modifica ed eliminazione dei libri della biblioteca.

Con le funzionalità di modifica ed eliminazione, il progetto implementa in maniera completa le operazioni tipiche del paradigma CRUD:

  • Create: tramite il form iniziale di inserimento, che consente di aggiungere nuovi libri nel database
  • Read: attraverso la tabella HTML generata dinamicamente, che mostra tutti i libri salvati
  • Update: modificando i dati esistenti tramite il form precompilato
  • Delete: rimuovendo record specifici mediante il link di eliminazione.

Questa struttura non solo è utile per una biblioteca, ma rappresenta uno standard universale per la gestione di qualsiasi insieme di dati persistenti. Le stesse tecniche, infatti, possono essere facilmente riutilizzate in applicazioni aziendali o commerciali, ad esempio per il tracciamento di ordini, la gestione di clienti e fornitori, l’organizzazione di eventi, o la pubblicazione di articoli su una piattaforma di contenuti.

Apprendere questi meccanismi significa acquisire un linguaggio comune a molti settori dello sviluppo web: che si tratti di ecommerce, CRM, sistemi di prenotazione o CMS, la logica CRUD costituisce la spina dorsale di gran parte delle applicazioni moderne. Una comprensione approfondita di queste dinamiche è quindi fondamentale per strutturare soluzioni scalabili, manutenibili e coerenti con le best practice dello sviluppo back-end.

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626