commit 7f9819c8d79811b35a6223052852d6bdbb281f4a Author: Fiorencis Andrea Date: Tue Mar 24 08:21:14 2026 +0100 Aggiunta base Faraci diff --git a/MotoCare.sql b/MotoCare.sql new file mode 100644 index 0000000..33da8dc --- /dev/null +++ b/MotoCare.sql @@ -0,0 +1,84 @@ +DROP DATABASE IF EXISTS MotoCare; +CREATE DATABASE MotoCare; +USE MotoCare; + +-- 1. CREAZIONE TABELLE + +CREATE TABLE MOTOCICLISTA ( + idTessera INT AUTO_INCREMENT PRIMARY KEY, + cognome VARCHAR(50) NOT NULL, + nome VARCHAR(50) NOT NULL, + dataNascita DATE, + marcaMoto VARCHAR(50), + email VARCHAR(100) +); + +CREATE TABLE LAVORAZIONE ( + codiceLavoro VARCHAR(10) PRIMARY KEY, + descrizione VARCHAR(100) NOT NULL, + meccanico VARCHAR(50) +); + +-- Questa tabella deriva dalla relazione N:N "RICHIEDERE" +CREATE TABLE RICHIEDERE ( + idRichiesta INT AUTO_INCREMENT PRIMARY KEY, -- inserita per meglio identificare ogni singola richiesta + dataRichiesta DATE NOT NULL, + costo DECIMAL(10, 2), -- Attributo della relazione + tipo VARCHAR(50), -- Attributo della relazione + idTessera INT, -- FK che punta a Motociclista + codiceLavoro VARCHAR(10), -- FK che punta a Lavorazione + FOREIGN KEY (idTessera) REFERENCES MOTOCICLISTA(idTessera), + FOREIGN KEY (codiceLavoro) REFERENCES LAVORAZIONE(codiceLavoro) +); + +CREATE TABLE SINISTRO ( + idSinistro INT AUTO_INCREMENT PRIMARY KEY, + dataSinistro DATE, + giorniFermo INT, + rimborsato CHAR(1) DEFAULT 'N', -- il valore di default è sempre 'N' + idTessera INT, + FOREIGN KEY (idTessera) REFERENCES MOTOCICLISTA(idTessera) +); + +-- 2. INSERIMENTO DATI +-- NOTA BENE: Avendo inserito le Primary Key come INT AUTO_INCREMENT, nelle insert non vengono inserite perchè è il sistema che lo fa in automatico + +INSERT INTO MOTOCICLISTA (cognome, nome, dataNascita, marcaMoto, email) VALUES +('Rossi', 'Marco', '1990-05-12', 'Ducati', 'marco.rossi@email.it'), +('Bianchi', 'Luca', '1985-11-20', 'Honda', 'luca.bianchi@email.it'), +('Verdi', 'Anna', '1995-02-15', 'Yamaha', NULL), +('Neri', 'Giorgio', '2000-08-10', 'Ducati', 'gio.neri@test.com'), +('Esposito', 'Giulia', '1998-07-01', 'BMW', 'giulia@email.it'), +('Romano', 'Paolo', '1988-12-30', 'KTM', NULL), +('Ferrari', 'Matteo', '1992-03-25', 'Aprilia', 'matteo@email.it'); + +INSERT INTO LAVORAZIONE (codiceLavoro, descrizione, meccanico) VALUES +('L01', 'Tagliando Completo', 'Mario Andero'), +('L02', 'Sostituzione Pneumatici', 'Luigi Coretti'), +('L03', 'Revisione Motore', 'Giovanni Arturi'), +('L04', 'Sostituzione Freni', 'Mario Andero'), +('L05', 'Controllo Elettronica', 'Anna Ferroli'); + +INSERT INTO RICHIEDERE (dataRichiesta, costo, tipo, idTessera, codiceLavoro) VALUES +('2024-01-10', 150.00, 'Tagliando', 1, 'L01'), +('2024-02-15', 40.00, 'Urgenza', 1, 'L02'), +('2024-03-20', 250.00, 'Straordinario', 2, 'L03'), +('2024-05-10', 90.00, 'Tagliando', 2, 'L01'), +('2024-06-05', 45.00, 'Ordinario', 3, 'L04'), +('2024-07-01', 300.00, 'Straordinario', 4, 'L03'), +('2024-08-12', 200.00, 'Ordinario', 5, 'L02'), +('2024-10-15', 500.00, 'Urgenza', 1, 'L03'), +('2024-09-09', 120.00, 'Urgenza', 4, 'L02'), +('2024-11-20', 180.00, 'Tagliando', 5, 'L01'); + +INSERT INTO SINISTRO (dataSinistro, giorniFermo, idTessera) VALUES +('2024-05-10', 3, 1), +('2024-06-20', 5, 1), +('2024-10-05', 2, 2), +('2024-10-25', 10, 3), +('2023-01-01', 1, 7), +('2023-02-01', 1, 7), +('2023-03-01', 1, 7), +('2023-04-01', 1, 7), +('2023-05-01', 1, 7), +('2023-06-01', 1, 7); \ No newline at end of file diff --git a/_db_config.php b/_db_config.php new file mode 100644 index 0000000..ab0eada --- /dev/null +++ b/_db_config.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/home 1.php b/home 1.php new file mode 100644 index 0000000..c9d1c70 --- /dev/null +++ b/home 1.php @@ -0,0 +1,76 @@ + + + + + + + Ricerca Motociclisti + + + + +

Cerca nel Registro Motociclisti

+ + + + + 0) { + echo "

Risultati per: " . htmlspecialchars($cognome_ricercato) . "

"; + echo " + + + + + + + + + "; + //fetch vuol dire vai a prendere + while ($row = mysqli_fetch_assoc($result)) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + + echo "
IDCognomeNomeEmail
" . htmlspecialchars($row['idTessera']) . "" . htmlspecialchars($row['cognome']) . "" . htmlspecialchars($row['nome']) . "" . htmlspecialchars($row['email']) . "
"; + } else { + echo "

Nessun motociclista trovato con cognome: " . htmlspecialchars($cognome_ricercato) . "

"; + } + + + } + } else { + echo "

Inserisci un cognome e premi 'Cerca' per visualizzare i dati.

"; + } + + mysqli_close($conn); + ?> + + + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..1234586 --- /dev/null +++ b/style.css @@ -0,0 +1,172 @@ +/* ========================================================================== + 1. VARIABILI E COLORI (Design Tokens 2026) + ========================================================================== */ +:root { + /* Palette 2026: Basata su "Cloud Dancer" (bianco caldo) e accenti vibranti */ + --bg-page: #f9f9fb; /* Sfondo chiaro e riposante */ + --text-main: #1a1a1c; /* Testo quasi nero per massimo contrasto */ + --text-muted: #64748b; /* Testo secondario */ + + --primary: #2563eb; /* Blu moderno e saturo */ + --primary-hover: #1d4ed8; + --accent: #f59e0b; /* Ambra per richiamare l'attenzione */ + + /* Colori per i Form */ + --input-bg: #ffffff; + --input-border: #e2e8f0; + --input-focus: #3b82f6; + --error: #ef4444; + --success: #10b981; + + /* Spaziature e Bordi */ + --radius: 12px; + --shadow-sm: 0 1px 3px rgba(0,0,0,0.1); + --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1); +} + +/* Modalità Notte Automatica */ +@media (prefers-color-scheme: dark) { + :root { + --bg-page: #0f172a; + --text-main: #f8fafc; + --text-muted: #94a3b8; + --input-bg: #1e293b; + --input-border: #334155; + } +} + +/* ========================================================================== + 2. TIPOGRAFIA E TESTO NELLA PAGINA + ========================================================================== */ +body { + font-family: 'Inter', system-ui, -apple-system, sans-serif; + background-color: var(--bg-page); + color: var(--text-main); + line-height: 1.6; + /* Tipografia fluida: scala tra 16px e 18px in base alla finestra */ + font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem); + margin: 0; + padding: 2rem; +} + +p { + margin-bottom: 1.5rem; + max-width: 70ch; /* Limita la larghezza per una lettura ottimale */ +} + +/* ========================================================================== + 3. TITOLI (H1, H2, H3) + ========================================================================== */ +h1, h2, h3 { + margin-top: 2.5rem; + margin-bottom: 1rem; + font-weight: 800; + line-height: 1.2; + color: var(--primary); +} + +h1 { font-size: clamp(2rem, 5vw, 3.5rem); letter-spacing: -0.02em; } +h2 { font-size: clamp(1.5rem, 4vw, 2.25rem); color: var(--text-main); } +h3 { font-size: clamp(1.25rem, 3vw, 1.75rem); border-left: 4px solid var(--accent); padding-left: 1rem; } + +/* ========================================================================== + 4. FORM E INPUT (Stile Moderno) + ========================================================================== */ +form { + display: flex; + flex-direction: column; + gap: 1.5rem; + max-width: 500px; + background: var(--input-bg); + padding: 2rem; + border-radius: var(--radius); + box-shadow: var(--shadow-md); +} + +.form-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +label { + font-weight: 600; + font-size: 0.9rem; +} + +input, textarea, select { + padding: 0.75rem 1rem; + border: 2px solid var(--input-border); + border-radius: 8px; + background-color: var(--input-bg); + color: var(--text-main); + transition: all 0.2s ease; + font-size: 1rem; +} + +input:focus { + outline: none; + border-color: var(--input-focus); + box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); +} + +/* Feedback validazione nativa senza JS */ +input:invalid:not(:placeholder-shown) { border-color: var(--error); } +input:valid:not(:placeholder-shown) { border-color: var(--success); } + +button { + background-color: var(--primary); + color: white; + padding: 0.8rem 1.5rem; + border: none; + border-radius: 8px; + font-weight: 700; + cursor: pointer; + transition: background 0.3s ease; +} + +button:hover { background-color: var(--primary-hover); } + +/* ========================================================================== + 5. TABELLE (Stile Minimalista Bento) + ========================================================================== */ +.table-container { + overflow-x: auto; /* Rende la tabella scrollabile su mobile */ + margin: 2rem 0; + border-radius: var(--radius); + box-shadow: var(--shadow-sm); +} + +table { + width: 100%; + border-collapse: collapse; + background: var(--input-bg); + text-align: left; +} + +th, td { + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--input-border); +} + +th { + background-color: var(--primary); + color: white; + font-weight: 600; + text-transform: uppercase; + font-size: 0.8rem; + letter-spacing: 0.05em; + position: sticky; /* Header fisso allo scroll */ + top: 0; +} + +tr:last-child td { border-bottom: none; } + +/* Effetto riga al passaggio del mouse */ +tr:hover td { + background-color: rgba(37, 99, 235, 0.05); +} + +@media (max-width: 600px) { + th, td { padding: 0.75rem; font-size: 0.9rem; } +} \ No newline at end of file