Corso PHP e Basi di Dati
Il corso di 20 ore è suddiviso in due moduli: un modulo per il linguaggio PHP e un modulo per basi di dati
Corso php
Un corso base di PHP di 10 ore, ha l’obiettivo di fornire agli studenti una comprensione chiara di come utilizzare PHP per sviluppare applicazioni web semplici, imparando a gestire l’interazione tra frontend e backend. Si possono coprire concetti come la sintassi di base, la manipolazione dei dati e l’integrazione con database.
Suddivisione delle 10 ore per il corso base di PHP
1. Prima Lezione (2 ore): Introduzione a PHP e Installazione
- Cos’è PHP e perché usarlo:
- Introduzione al linguaggio di scripting lato server.
- Differenze tra PHP e linguaggi lato client (come JavaScript).
- Esempi di siti web costruiti con PHP.
- Installazione dell’ambiente di sviluppo:
- Installazione di un server locale (es. XAMPP, MAMP) per eseguire PHP.
- Configurazione di un editor di testo o IDE (es. VS Code).
- Primo programma PHP:
- Scrivere un semplice script PHP che stampa “Hello World”.
- Come funziona un file PHP e integrazione con HTML.
2. Seconda Lezione (2 ore): Variabili, Tipi di Dati e Operatori
- Dichiarazione e utilizzo delle variabili:
- Introduzione alle variabili in PHP ($) e ai tipi di dati (stringhe, numeri interi, float, booleani).
- Operatori:
- Operatori aritmetici, logici e di confronto.
- Utilizzo degli operatori per eseguire semplici operazioni matematiche.
- Output e concatenazione di stringhe:
- Uso di echo e print per visualizzare i risultati.
3. Terza Lezione (2 ore): Strutture di Controllo e Cicli
- Condizioni:
- Uso di if, else
if, else per controllare il flusso del programma. - Condizioni multiple con switch.
- Uso di if, else
- Cicli:
- Ciclo for, while e foreach per iterare su array e liste.
- Esempi pratici:
- Esempi pratici di controllo del flusso con PHP, come la verifica delle credenziali dell’utente.
4. Quarta Lezione (2 ore): Form e Input dell’Utente
- Interazione tra PHP e HTML:
- Creazione di un semplice form HTML per raccogliere dati (es. nome, email).
- Uso del metodo POST e GET per trasmettere dati a uno script PHP.
- Gestione dei dati dell’utente:
- Accesso ai dati inviati con $_POST e $_GET.
- Validazione di base dei dati ricevuti (es. campi obbligatori).
- Progetto pratico:
- Creare un form di login che verifica il nome utente e la password.
5. Quinta Lezione (2 ore): Array e Funzioni
- Array in PHP:
- Creazione di array semplici e associativi.
- Accesso e manipolazione degli elementi di un array.
- Funzioni:
- Definizione di funzioni personalizzate e passaggio di parametri.
- Uso delle funzioni integrate di PHP per la manipolazione di stringhe e array.
- Esempi pratici:
- Scrivere una funzione che calcola la somma di un array di numeri e restituisce il risultato.
6. Progetto Finale (2 ore): Applicazione Completa in PHP
- Obiettivo:
- Creazione di un progetto che integra quanto appreso durante il corso.
- Progetto pratico:
- Possibili progetti:
- Sistema di registrazione utente: un form per registrare nuovi utenti convalidando i dati e memorizzandoli in un file.
- Sistema di prenotazione: un’applicazione che permette agli utenti di inserire dati (es. prenotazioni di posti in un evento) e visualizzarli.
- Possibili progetti:
- Debugging e ottimizzazione del codice:
- Testare il progetto, correggere errori e migliorare il flusso di lavoro.
Argomenti Opzionali (se c’è tempo disponibile):
- Introduzione ai cookie e sessioni:
- Come gestire lo stato tra pagine con cookie (setcookie(), $_COOKIE) e sessioni (session_start(), $_SESSION).
- Integrazione con database (MySQL):
- Connessione a un database MySQL e inserimento/recupero dati con PHP.
Progetti Pratici PHP
Verranno sviluppati alcuni progetti pratici tra quelli in elenco:
1. Form di Login e Registrazione Utenti
- Obiettivo: Creare un form di login e registrazione utenti, convalidando i dati e memorizzando le credenziali in un file o in un database.
- Concetti utilizzati:
- Gestione dei form con metodi POST e GET.
- Validazione lato server dei dati dell’utente (es. verifica di campi obbligatori e formattazione email).
- Creazione di sessioni per tenere traccia dell’utente dopo il login.
- Estensione: Aggiungere la funzionalità di recupero password e una sezione per modificare il profilo utente.
2. Creazione di un Sistema di Guestbook
- Obiettivo: Creare un sistema di guestbook in cui gli utenti possono lasciare commenti e visualizzare quelli degli altri.
- Concetti utilizzati:
- Gestione dei form per l’invio dei commenti.
- Salvataggio dei commenti in un file di testo o in un database.
- Visualizzazione dinamica dei commenti sul sito web.
- Estensione: Aggiungere la moderazione dei commenti (es. possibilità di approvare o rifiutare commenti).
3. Sistema di Gestione di una To-Do List
- Obiettivo: Creare un’applicazione per gestire una lista di cose da fare (to-do list) con la possibilità di aggiungere, rimuovere e completare attività.
- Concetti utilizzati:
- Manipolazione di array e gestione dei dati utente con $_POST.
- Visualizzazione dinamica delle attività in una tabella.
- Salvare le attività in un file di testo o in un database.
- Estensione: Aggiungere funzionalità per assegnare una scadenza a ogni attività e inviare notifiche via email.
4. Sistema di Prenotazione di Eventi
- Obiettivo: Creare un’applicazione in cui gli utenti possono prenotare posti per un evento (es. concerto, cinema, ecc.).
- Concetti utilizzati:
- Creazione di un form per l’inserimento dei dati di prenotazione.
- Uso di array o database per memorizzare e gestire le prenotazioni.
- Visualizzazione dei posti disponibili e gestione delle prenotazioni multiple.
- Estensione: Aggiungere la possibilità di visualizzare un riepilogo delle prenotazioni e inviare conferme via email.
5. Creazione di un Semplice E-commerce (Carrello della Spesa)
- Obiettivo: Creare un’applicazione di e-commerce semplice che permette agli utenti di aggiungere prodotti a un carrello e visualizzare il totale.
- Concetti utilizzati:
- Creazione di un elenco di prodotti e form per aggiungerli al carrello.
- Uso delle sessioni per mantenere il carrello dell’utente attivo durante la navigazione.
- Calcolo dinamico del totale del carrello.
- Estensione: Aggiungere la gestione degli ordini e la possibilità di pagare tramite PayPal o altri servizi di pagamento.
6. Creazione di un Sistema di Blog Semplice
- Obiettivo: Creare un’applicazione che permetta agli utenti di scrivere, modificare e pubblicare post di blog.
- Concetti utilizzati:
- Form per l’invio di contenuti (titolo, corpo del post) e memorizzazione dei dati in un database.
- Gestione dei post pubblicati e visualizzazione dinamica sul sito.
- Implementazione di una dashboard per l’amministratore del sito per gestire i post.
- Estensione: Aggiungere la possibilità di inserire commenti nei post e un sistema di moderazione.
7. Sistema di Votazione Online
- Obiettivo: Creare un sistema di votazione in cui gli utenti possono votare per una determinata opzione (es. sondaggi o votazioni interne).
- Concetti utilizzati:
- Form per raccogliere i voti e memorizzarli in un file o database.
- Visualizzazione dinamica dei risultati in tempo reale.
- Controllo del doppio voto tramite indirizzo IP o sessioni.
- Estensione: Aggiungere la possibilità di chiudere le votazioni a un’ora specifica e visualizzare i risultati finali.
8. Sistema di Upload e Gestione File
- Obiettivo: Creare un sistema che permetta agli utenti di caricare file (es. immagini o documenti) e gestire i file caricati.
- Concetti utilizzati:
- Gestione dell’upload dei file con $_FILES.
- Verifica della dimensione e del tipo di file.
- Visualizzazione dei file caricati e possibilità di eliminarli.
- Estensione: Aggiungere funzionalità per categorizzare i file e limitarne l’accesso in base agli utenti.
9. Sistema di Registrazione e Autenticazione Utenti
- Obiettivo: Creare un sistema completo di registrazione e autenticazione utenti con sessioni.
- Concetti utilizzati:
- Creazione di form per la registrazione e il login degli utenti.
- Uso di sessioni per mantenere gli utenti autenticati dopo il login.
- Salvataggio dei dati degli utenti in un database.
- Estensione: Implementare la gestione delle autorizzazioni con ruoli (es. amministratore, utente normale) e una dashboard per gestire il profilo.
10. Sistema di Feedback Semplice
- Obiettivo: Creare un sistema che consenta agli utenti di inviare feedback su un servizio o un prodotto.
- Concetti utilizzati:
- Creazione di un form per l’invio di feedback (es. recensioni o valutazioni).
- Memorizzazione dei feedback in un file o database.
- Visualizzazione dinamica dei feedback ricevuti.
- Estensione: Aggiungere la possibilità di inviare notifiche via email all’amministratore del sito quando un feedback viene inviato.
Corso Basi di Dati
Il corso base di basi di dati in 10 ore copre i concetti fondamentali dei database relazionali, la progettazione di database e l’uso di SQL (Structured Query Language) per manipolare e interrogare i dati. Gli studenti dovrebbero imparare a creare tabelle, gestire relazioni tra i dati e eseguire query su un database.
Suddivisione delle 10 ore per il corso base di Basi di Dati
1. Prima Lezione (2 ore): Introduzione ai Database e Installazione
- Cos’è un database e perché è importante:
- Definizione di database e database management system (DBMS).
- Differenza tra database relazionali e non relazionali.
- Introduzione ai concetti di tabelle, righe, colonne e chiavi.
- Installazione di un DBMS:
- Installazione e configurazione di MySQL, PostgreSQL o SQLite.
- Introduzione a strumenti di gestione DBMS come phpMyAdmin o interfacce a riga di comando.
- Introduzione al linguaggio SQL:
- Cos’è SQL e la sua funzione per l’interazione con i database.
2. Seconda Lezione (2 ore): Creazione e Gestione delle Tabelle
- Creazione di tabelle:
- Sintassi SQL per creare tabelle (CREATE
TABLE). - Tipi di dati SQL (es. INT, VARCHAR, DATE, DECIMAL).
- Definizione di chiavi primarie (PRIMARY
KEY) e chiavi esterne (FOREIGN
KEY).
- Sintassi SQL per creare tabelle (CREATE
- Inserimento dei dati:
- Inserimento di righe in una tabella con INSERT
INTO. - Valutazione dell’integrità dei dati e uso delle chiavi primarie.
- Inserimento di righe in una tabella con INSERT
- Modifica delle tabelle:
- Aggiungere, modificare o eliminare colonne con ALTER
TABLE. - Cancellazione di tabelle con DROP
TABLE e uso di TRUNCATE.
- Aggiungere, modificare o eliminare colonne con ALTER
3. Terza Lezione (2 ore): Manipolazione dei Dati (SELECT, UPDATE, DELETE)
- Query di selezione (SELECT):
- Uso di SELECT per recuperare dati da una tabella.
- Filtrare i dati con WHERE, ordinare i risultati con ORDER
BY, e limitare i risultati con LIMIT.
- Modifica dei dati (UPDATE):
- Sintassi di UPDATE per modificare i dati esistenti.
- Uso di WHERE per specificare i record da aggiornare.
- Eliminazione di dati (DELETE):
- Uso di DELETE per rimuovere righe da una tabella.
- Precauzioni sull’uso di DELETE e TRUNCATE.
4. Quarta Lezione (2 ore): Relazioni e Join tra Tabelle
- Relazioni tra tabelle:
- Definizione di chiavi esterne e relazioni uno-a-molti, molti-a-molti.
- Importanza dell’integrità referenziale.
- Join tra tabelle:
- Uso di JOIN per combinare dati da più tabelle.
- Differenze tra INNER
JOIN, LEFT
JOIN, RIGHT
JOIN e FULL
OUTER JOIN. - Esempi pratici di join su tabelle relazionate (es. clienti e ordini).
- Esercizi pratici:
- Creare e manipolare tabelle collegate, eseguendo query con join per recuperare informazioni da tabelle correlate.
5. Quinta Lezione (2 ore): Funzioni SQL e Query Complesse
- Funzioni aggregate:
- Uso di funzioni come COUNT(), SUM(), AVG(), MIN(), MAX().
- Raggruppare i dati con GROUP
BY e filtrare i gruppi con HAVING.
- Subquery e query nidificate:
- Creazione di subquery (query all’interno di altre query).
- Esecuzione di query nidificate per recuperare dati specifici.
- Query complesse:
- Creazione di query con condizioni multiple e uso di operatori logici (AND, OR).
- Query su più tabelle con subquery e join.
6. Progetto Finale (2 ore): Creazione di un Database Completo
- Obiettivo:
- Progettare e implementare un database relazionale completo che utilizza le competenze apprese.
- Progetto pratico:
- Possibili progetti:
- Sistema di gestione di una biblioteca: tabelle per libri, utenti, prestiti, con query per recuperare informazioni sui libri presi in prestito, utenti con ritardi, ecc.
- Sistema di gestione di un negozio online: tabelle per clienti, ordini, prodotti e pagamenti, con query per generare report di vendita e recuperare informazioni sui clienti.
- Possibili progetti:
- Debugging e ottimizzazione:
- Test del database, correzione di errori e ottimizzazione delle query.
Argomenti Opzionali (se c’è tempo disponibile):
- Creazione di viste:
- Creazione di viste virtuali con CREATE
VIEW per semplificare query complesse.
- Creazione di viste virtuali con CREATE
- Gestione delle transazioni:
- Uso di transazioni con BEGIN, COMMIT e ROLLBACK per garantire l’integrità dei dati in caso di errori.
- Backup e Ripristino dei database:
- Strumenti per fare backup e ripristino di database SQL.
Progetti Pratici Basi di Dati
Verranno sviluppati alcuni progetti elencati
1. Sistema di Gestione di una Biblioteca
- Obiettivo: Creare un database che gestisca i prestiti di libri da una biblioteca.
- Tabelle:
- Libri: id, titolo, autore, genere, anno di pubblicazione.
- Utenti: id, nome, cognome, data di nascita, indirizzo.
- Prestiti: id, id_libro (FK), id_utente (FK), data_prestito, data_restituzione.
- Query pratiche:
- Recuperare tutti i libri presi in prestito da un utente specifico.
- Visualizzare i libri in ritardo di restituzione.
- Generare report di utilizzo della biblioteca (es. libri più prestati, utenti attivi).
- Estensione: Aggiungere una funzione di prenotazione libri e notifiche automatiche per le scadenze.
2. Sistema di Gestione degli Ordini per un Negozio Online
- Obiettivo: Creare un database che gestisca gli ordini di un negozio online.
- Tabelle:
- Clienti: id, nome, email, indirizzo, data_registrazione.
- Prodotti: id, nome_prodotto, prezzo, quantità_disponibile.
- Ordini: id, id_cliente (FK), data_ordine, totale.
- Dettagli_Ordini: id_ordine (FK), id_prodotto (FK), quantità, prezzo_totale.
- Query pratiche:
- Visualizzare gli ordini di un cliente specifico.
- Mostrare i prodotti più venduti in un determinato periodo.
- Generare report di vendita totale giornaliera o mensile.
- Estensione: Aggiungere il tracking dello stato dell’ordine (es. in lavorazione, spedito, consegnato).
3. Sistema di Gestione di Prenotazioni
- Obiettivo: Creare un sistema di gestione di prenotazioni per un ristorante, hotel o cinema.
- Tabelle:
- Clienti: id, nome, cognome, telefono, email.
- Prenotazioni: id, id_cliente (FK), data_prenotazione, orario_prenotazione, numero_persone.
- Tavoli (per ristorante): id, numero_tavolo, capacità.
- Query pratiche:
- Recuperare le prenotazioni di un cliente specifico.
- Visualizzare le prenotazioni in un determinato giorno o settimana.
- Verificare la disponibilità di tavoli per una determinata data e orario.
- Estensione: Implementare la possibilità di modificare o cancellare prenotazioni.
4. Sistema di Gestione di Dipendenti
- Obiettivo: Creare un sistema di gestione per i dipendenti di un’azienda.
- Tabelle:
- Dipendenti: id, nome, cognome, data_assunzione, ruolo, stipendio.
- Dipartimenti: id, nome_dipartimento, capo_dipartimento.
- Presenze: id_dipendente (FK), data, orario_ingresso, orario_uscita.
- Query pratiche:
- Recuperare le presenze di un dipendente specifico in un certo periodo.
- Visualizzare lo storico delle assunzioni e promozioni di ogni dipendente.
- Generare report sul costo totale dei dipendenti per dipartimento.
- Estensione: Aggiungere funzionalità per la gestione delle ferie e dei permessi.
5. Sistema di Votazione Online
- Obiettivo: Creare un sistema per votazioni online (es. elezioni aziendali, sondaggi).
- Tabelle:
- Utenti: id, nome, email, password.
- Candidati: id, nome_candidato, posizione, id_votazione (FK).
- Votazioni: id, titolo_votazione, data_inizio, data_fine.
- Voti: id, id_utente (FK), id_candidato (FK), data_voto.
- Query pratiche:
- Visualizzare il numero totale di voti per ciascun candidato.
- Mostrare i votanti che hanno partecipato a una votazione specifica.
- Verificare la validità dei voti e prevenire il doppio voto.
- Estensione: Implementare un’interfaccia grafica semplice per permettere agli utenti di votare e vedere i risultati in tempo reale.
6. Sistema di Gestione di un Corsi di Formazione
- Obiettivo: Creare un sistema che gestisca i corsi di formazione e le iscrizioni degli studenti.
- Tabelle:
- Studenti: id, nome, cognome, email, numero_telefono.
- Corsi: id, nome_corso, descrizione, data_inizio, data_fine.
- Iscrizioni: id_studente (FK), id_corso (FK), data_iscrizione.
- Insegnanti: id, nome_insegnante, materia_insegnata.
- Query pratiche:
- Mostrare gli studenti iscritti a un determinato corso.
- Visualizzare i corsi tenuti da un determinato insegnante.
- Verificare la disponibilità di posti in un corso specifico.
- Estensione: Aggiungere una funzionalità per generare certificati di completamento per gli studenti.
7. Sistema di Gestione di Progetti e Task
- Obiettivo: Creare un database per gestire i progetti e i task di un team.
- Tabelle:
- Progetti: id, nome_progetto, descrizione, data_inizio, data_fine.
- Task: id, id_progetto (FK), nome_task, stato_task (in corso, completato), assegnato_a (id_dipendente FK), scadenza.
- Dipendenti: id, nome, ruolo.
- Query pratiche:
- Mostrare tutti i task di un determinato progetto.
- Visualizzare i task assegnati a un determinato dipendente.
- Generare un report sui progetti completati o in ritardo.
- Estensione: Aggiungere la possibilità di aggiornare lo stato dei task e di inviare notifiche via email al completamento.
8. Sistema di Gestione di Inventario
- Obiettivo: Creare un sistema per gestire l’inventario di un negozio o magazzino.
- Tabelle:
- Prodotti: id, nome_prodotto, prezzo, quantità_disponibile, fornitore.
- Fornitori: id, nome_fornitore, contatto_fornitore.
- Ordini: id, id_prodotto (FK), quantità_ordinata, data_ordine.
- Query pratiche:
- Visualizzare i prodotti disponibili in magazzino con quantità inferiori a una soglia.
- Generare un report sugli ordini effettuati e il loro stato.
- Visualizzare i fornitori con cui il negozio lavora di più.
- Estensione: Aggiungere un sistema di gestione delle scorte minime e notifiche per ordini di rifornimento automatici.
9. Sistema di Gestione di una Clinica
- Obiettivo: Creare un database per la gestione di una clinica medica.
- Tabelle:
- Pazienti: id, nome, cognome, data_nascita, contatto.
- Medici: id, nome_medico, specializzazione.
- Appuntamenti: id, id_paziente (FK), id_medico (FK), data, ora, diagnosi.
- Query pratiche:
- Visualizzare gli appuntamenti di un medico per una data specifica.
- Mostrare la cronologia delle visite di un paziente.
- Generare un report delle diagnosi più frequenti in un certo periodo.
- Estensione: Implementare la gestione delle cartelle cliniche digitali con possibilità di caricamento di documenti.
10. Sistema di Raccolta Dati per un Sondaggio
- Obiettivo: Creare un sistema che permetta di raccogliere risposte a un sondaggio.
- Tabelle:
- Sondaggi: id, titolo, descrizione.
- Domande: id, id_sondaggio (FK), testo_domanda.
- Risposte: id, id_domanda (FK), id_utente (FK), testo_risposta.
- Utenti: id, nome, email.
- Query pratiche:
- Recuperare tutte le risposte di un utente specifico.
- Mostrare le risposte aggregate per una determinata domanda del sondaggio.
- Generare un report sui risultati complessivi del sondaggio.
- Estensione: Aggiungere la possibilità di limitare le risposte per utente e gestire sondaggi anonimi.