Deploy con DB
All checks were successful
Deploy / trigger (push) Successful in 7s

This commit is contained in:
2026-04-12 20:10:30 +02:00
parent 304218df75
commit e831d2b4bf
15 changed files with 1150 additions and 0 deletions

260
custom_film_attori.sql Normal file
View File

@@ -0,0 +1,260 @@
-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Creato il: Apr 12, 2026 alle 20:06
-- Versione del server: 10.4.32-MariaDB
-- Versione PHP: 8.2.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `film_attori`
--
-- --------------------------------------------------------
--
-- Struttura della tabella `attori`
--
CREATE TABLE `attori` (
`id_attore` bigint(20) NOT NULL,
`nome` varchar(255) NOT NULL,
`cognome` varchar(255) NOT NULL,
`data_nascita` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dump dei dati per la tabella `attori`
--
INSERT INTO `attori` (`id_attore`, `nome`, `cognome`, `data_nascita`) VALUES
(1, 'Brad', 'Pitt', '1963-12-18'),
(2, 'Helena', 'Bonham Carter', '1966-05-26'),
(3, 'Leonardo', 'Di Caprio', '1974-11-11'),
(4, 'Kate', 'Winslet', '1975-10-05'),
(5, 'Colin', 'Firth', '1960-09-10'),
(6, 'Robert Sean', 'Leonard', '1969-02-28'),
(7, 'Robin', 'Williams', '1951-07-21'),
(8, 'Benedict', 'Cumberbatch', '1976-07-19'),
(9, 'Keira', 'Knightley', '1985-03-26'),
(10, 'Will', 'Smith', '1968-09-25'),
(11, 'Jaden', 'Smith', '1998-07-08'),
(12, 'Sandra', 'Bullock', '1964-07-26'),
(13, 'Ryan', 'Reynolds', '1976-10-23'),
(14, 'Linda', 'Blair', '1959-01-22'),
(15, 'Jason', 'Miller', '1939-04-22'),
(16, 'Bradley', 'Cooper', '1975-01-05'),
(17, 'Ed', 'Helms', '1974-01-24'),
(18, 'Elijah', 'Wood', '1981-01-28'),
(19, 'Cate', 'Blanchett', '1969-05-14'),
(20, 'Matthew', 'McConaughey', '1969-11-04'),
(21, 'Anne', 'Hathaway', '1982-11-12'),
(22, 'Terence', 'Hill', '1939-03-29'),
(23, 'Bud', 'Spencer', '1929-10-31'),
(24, 'Lady', 'Gaga', '1986-03-28'),
(25, 'Adam', 'Driver', '1983-11-19'),
(26, 'Francesco', 'Mancuso', '2007-02-08'),
(27, 'Massimo', 'Leone', '2026-04-01'),
(28, 'Tom', 'Cruise', '1962-07-03');
-- --------------------------------------------------------
--
-- Struttura della tabella `film`
--
CREATE TABLE `film` (
`id_film` bigint(20) NOT NULL,
`nome` varchar(255) NOT NULL,
`trama` text DEFAULT NULL,
`durata` time NOT NULL,
`data_uscita` date NOT NULL,
`id_genere` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dump dei dati per la tabella `film`
--
INSERT INTO `film` (`id_film`, `nome`, `trama`, `durata`, `data_uscita`, `id_genere`) VALUES
(1, 'Fight Club', 'Tyler Durden ed un nuovo amico sfogano la loro aggressività creando un club di combattimento, che assume rapidamente connotati rivoluzionari, fino a esporre la vera identità di Tyler Durden.', '02:19:00', '1999-10-15', 1),
(2, 'Titanic', 'Il transatlantico Titanic, considerato un gioiello tecnologico ed il più lussuoso piroscafo da crociera mai realizzato, salpa dall\'Inghilterra il dieci aprile del 1912 con oltre 1500 passeggeri a bordo per il suo viaggio inaugurale. I viaggiatori sono collocati in tre classi, riflesso delle differenze sociali.', '03:47:00', '1997-12-19', 2),
(3, 'Il discorso del re', 'Dopo la morte del padre e l\'abdicazione del fratello Edoardo VIII, Bertie, che soffre da tutta la vita di balbuzie, viene incoronato re con il nome di Giorgio VI d\'Inghilterra. La sua fida, ora, è quella di affrontare un importante discorso pubblico.', '01:58:00', '2011-01-28', 3),
(4, 'L\'attimo fuggente', 'Un insegnante di un liceo per classi abbienti del New England utilizza metodi non convenzionali per esortare i suoi studenti, sotto pressione dai genitori e dalla scuola, alla libertà e creatività.', '02:08:00', '1989-09-29', 2),
(5, 'Inside out', 'Riley è costretta a lasciare la propria vita nel Midwest quando il padre si trasferisce per lavoro a San Francisco. La piccola è guidata dalle proprie emozioni: Gioia, Paura, Rabbia, Disgusto e Tristezza, che vivono nel Quartier Generale, il centro di controllo nella mente, da dove l\'aiutano a affrontare la vita di tutti i giorni.', '01:35:00', '2015-09-16', 4),
(6, 'Il re leone', 'In seguito alla morte del padre, il cucciolo di leone Simba deve combattere il malvagio zio Scar che cerca di rubargli il trono di re della giungla. In suo aiuto ci sono due simpatici compagni, Timon e Pumbaa.', '01:29:00', '1994-11-23', 4),
(7, 'The imitation game', 'La vita del matematico inglese Alan Turing, genio indiscusso del XX secolo, considerato uno dei padri dell\'informatica e dei moderni computer, fino alla sua precoce e tragica scomparsa.', '01:54:00', '2014-09-28', 2),
(8, 'La ricerca della felicità', 'Chris Gardner è un genitore single che lotta per crescere il figlio e cercare di realizzare il sogno di una vita migliore e dignitosa per entrambi.', '01:57:00', '2007-01-12', 2),
(9, 'Love actually', 'Nella città di Londra le storie di nove personaggi si intrecciano per raccontare la complessità dei rapporti umani e dell\'amore.', '02:09:00', '2003-11-14', 5),
(10, 'Ricatto d\'amore', 'Di fronte alla minaccia di deportazione dal Canada, un\'editrice di successo finge di essere fidanzata con il proprio assistente, lo stesso uomo che ha tormentato per anni.', '01:48:00', '2009-09-03', 5),
(11, 'L\'esorcista', 'Regan McNeil, una ragazzina di 12 anni, viene posseduta dal demonio. Un giovane prete in crisi di fede, aiutato dal proprio anziano mentore, affronta la presenza demoniaca in un mortale duello.', '02:12:00', '1973-06-19', 6),
(12, 'Una notte da leoni', 'Arrivato a Las Vegas per festeggiare l\'addio al celibato del loro amico Doug, durante la notte il gruppetto si alla pazza gioia prendendo una sbornia colossale. Al risveglio, però, qualcosa non va.', '01:40:00', '2009-06-19', 7),
(13, 'Il signore degli anelli', 'Un giovane hobbit e un variegato gruppo, composto da umani, un nano, un elfo e altri hobbit, partono per un delicata missione, guidati dal potente mago Gandalf. Devono distruggere un anello magico e sconfiggere così il malvagio Sauron.', '02:58:00', '2002-01-18', 8),
(14, 'Interstellar', 'In un futuro non precisato, un drastico cambiamento climatico colpisce duramente l\'agricoltura. Il granturco è l\'unica coltivazione ancora in grado di crescere ed un gruppo di scienziati è intenzionato ad attraversare lo spazio per trovare nuovi luoghi adatti a coltivarlo.', '02:49:00', '2014-10-26', 10),
(15, 'Lo chiamavano Trinità', 'Un pistolero buono e pigro, giunge in una cittadina dove ritrova suo fratello sotto le mentite spoglie di sceriffo, assunte per poter meglio perpetrare un furto di bestiame.', '01:55:00', '1970-12-22', 9),
(16, 'House of Gucci', 'Il difficile matrimonio e il tormentato divorzio di Patrizia e Maurizio Gucci, capo della casa di moda Gucci, porta ad un efferato omicidio.', '02:37:00', '2021-11-24', 11),
(17, 'Frozen', 'Anna, un\'impavida giovane principessa, si imbarca in un viaggio epico per trovare la sorella, i cui poteri di ghiaccio hanno intrappolato il loro regno in un inverno eterno.', '01:32:00', '2013-12-12', 4),
(19, 'Il padrino', 'La vita di Vito Corleone, impegnato nel difficile compito di tenere la famiglia unita e l\'impero mafioso compatto.', '02:55:00', '1972-09-21', 2),
(20, 'Top Gun', 'Un pilota di caccia si innamora della propria bionda istruttrice, Charlotte Blackwood, e si crede responsabile della morte del copilota. L\'esperienza nel programma di formazione lo forza a crescere.', '01:50:00', '1986-09-25', 12);
-- --------------------------------------------------------
--
-- Struttura della tabella `generi`
--
CREATE TABLE `generi` (
`id_genere` bigint(20) NOT NULL,
`nome` varchar(255) NOT NULL,
`descrizione` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dump dei dati per la tabella `generi`
--
INSERT INTO `generi` (`id_genere`, `nome`, `descrizione`) VALUES
(1, 'Thriller', 'Il thriller (dall\'inglese to thrill, rabbrividire) è un genere di fiction che utilizza la suspense, la tensione e l\'eccitazione come elementi principali della trama.'),
(2, 'Drammatico', 'Un film drammatico è un genere di film che si basa sullo sviluppo dei personaggi, dell\'interazione tra essi e che tratta temi di impatto emotivo. Gone With The Wind è un dramma romantico. La definizione del genere è complessa e non ne esiste una universalmente condivisa, dal punto di vista stilistico tematico.'),
(3, 'Storico', 'Un film storico è un film in costume che tratta vicende reali, veramente o almeno verosimilmente avvenute nel passato e comunque ambientate in un preciso contesto storico, ricostruito nei dettagli in modo da apparire credibile allo spettatore.'),
(4, 'Animazione', 'Per cinema d\'animazione s\'intende pertanto quel particolare cinema che viene realizzato non attraverso la riproduzione fotografica della realtà, ma producendo una nuova realtà inventata, ottenuta dalla scomposizione e dalla ricomposizione del movimento delle figure.'),
(5, 'Romantico', 'Il film sentimentale mette la storia d\'amore o la ricerca dell\'amore al centro della trama principale. Occasionalmente, gli amanti devono affrontare ostacoli come problemi finanziari, malattie, varie forme di discriminazione, vincoli psicologici o familiari che minacciano di rompere la loro unione.'),
(6, 'Horror', 'Il cinema dell\'orrore o cinema horror è un genere cinematografico caratterizzato da personaggi immaginari e mostruosi, situazioni macabre, irrazionali o di origine soprannaturale e con atmosfere da brivido.'),
(7, 'Comico', 'Partiamo dalle basi: il film comico è un genere di pellicola incentrato sull\'innescare nello spettatore il meccanismo del riso e instillare un buonumore generalizzato. Per fare questo vengono adottate diverse tecniche, dal linguaggio umoristico alle gag divertenti, sino alle situazioni squisitamente paradossali.'),
(8, 'Fantasy', 'Genere di film che racconta una storia con elementi fantastici, surreali o fiabeschi: creature immaginarie, vicende al limite o oltre la realtà, incantesimi e magie, viaggi in dimensioni ultraterrene.'),
(9, 'Western', 'Genere cinematografico d\'avventura che, attraverso le vicende di pionieri, cowboy e fuorilegge, affronta il tema della \'frontiera\' all\'epoca della colonizzazione delle regioni occidentali (West) degli USA. Nato agli albori del cinema (il primo esempio può essere considerato L\'assalto al treno, 1903, di Edwin S.'),
(10, 'Fantascienza', 'Solitamente questo genere di film viene ambientato in un contesto legato a una visione più o meno lontana del futuro, come quello dei viaggi interstellari, quello del contatto con entità extraterrestri, quello dei conflitti nucleari o delle catastrofi climatiche globali.'),
(11, 'Biografico', 'Detto anche biopic (biographical picture), comprende quei film che rievocano la vita di personaggi realmente vissuti, rielaborandola in modo più o meno romanzesco.'),
(12, 'Azione', 'Il cinema d\'azione è un genere cinematografico incentrato su spettacolarità, ritmo frenetico e dinamismo, caratterizzato da inseguimenti, combattimenti, esplosioni e acrobazie. La narrazione è spesso guidata dall\'azione stessa piuttosto che dalla psicologia dei personaggi, con eroi solitamente \"invincibili\" che superano sfide fisiche estreme, sopravvivendo a situazioni di forte tensione e pericolo.');
-- --------------------------------------------------------
--
-- Struttura della tabella `recitare`
--
CREATE TABLE `recitare` (
`id_attore` bigint(20) NOT NULL,
`id_film` bigint(20) NOT NULL,
`ruolo` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Dump dei dati per la tabella `recitare`
--
INSERT INTO `recitare` (`id_attore`, `id_film`, `ruolo`) VALUES
(1, 1, 'Protagonista'),
(2, 1, 'Non protagonista'),
(2, 3, 'Non protagonista'),
(3, 2, 'Protagonista'),
(4, 2, 'Protagonista'),
(5, 3, 'Protagonista'),
(5, 9, 'Non protagonista'),
(6, 4, 'Non protagonista'),
(7, 4, 'Protagonista'),
(8, 7, 'Protagonista'),
(9, 7, 'Non protagonista'),
(9, 9, 'Non protagonista'),
(10, 8, 'Protagonista'),
(11, 8, 'Non protagonista'),
(12, 10, 'Protagonista'),
(13, 10, 'Protagonista'),
(14, 11, 'Protagonista'),
(15, 11, 'Non protagonista'),
(16, 12, 'Protagonista'),
(17, 12, 'Protagonista'),
(18, 13, 'Protagonista'),
(19, 13, 'Non protagonista'),
(20, 14, 'Protagonista'),
(21, 14, 'Non protagonista'),
(22, 15, 'Protagonista'),
(23, 15, 'Protagonista'),
(24, 16, 'Protagonista'),
(25, 16, 'Protagonista'),
(28, 20, 'Protagonista');
--
-- Indici per le tabelle scaricate
--
--
-- Indici per le tabelle `attori`
--
ALTER TABLE `attori`
ADD PRIMARY KEY (`id_attore`);
--
-- Indici per le tabelle `film`
--
ALTER TABLE `film`
ADD PRIMARY KEY (`id_film`),
ADD KEY `id_genere` (`id_genere`);
--
-- Indici per le tabelle `generi`
--
ALTER TABLE `generi`
ADD PRIMARY KEY (`id_genere`);
--
-- Indici per le tabelle `recitare`
--
ALTER TABLE `recitare`
ADD PRIMARY KEY (`id_attore`,`id_film`),
ADD KEY `id_film` (`id_film`);
--
-- AUTO_INCREMENT per le tabelle scaricate
--
--
-- AUTO_INCREMENT per la tabella `attori`
--
ALTER TABLE `attori`
MODIFY `id_attore` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=29;
--
-- AUTO_INCREMENT per la tabella `film`
--
ALTER TABLE `film`
MODIFY `id_film` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;
--
-- AUTO_INCREMENT per la tabella `generi`
--
ALTER TABLE `generi`
MODIFY `id_genere` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
--
-- Limiti per le tabelle scaricate
--
--
-- Limiti per la tabella `film`
--
ALTER TABLE `film`
ADD CONSTRAINT `film_ibfk_1` FOREIGN KEY (`id_genere`) REFERENCES `generi` (`id_genere`);
--
-- Limiti per la tabella `recitare`
--
ALTER TABLE `recitare`
ADD CONSTRAINT `recitare_ibfk_1` FOREIGN KEY (`id_attore`) REFERENCES `attori` (`id_attore`),
ADD CONSTRAINT `recitare_ibfk_2` FOREIGN KEY (`id_film`) REFERENCES `film` (`id_film`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

140
file/add/index.php Normal file
View File

@@ -0,0 +1,140 @@
<?php
if (isset($_GET['s'])) {
highlight_file("index.php");
return;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Dati inviati
$checks = true;
$nome = "";
$cognome = "";
$data_nascita = "";
// htmlspecialchars effettua una sanitizzazione base
if (isset($_POST['nome'])) {
if ($_POST['nome'] === "" || $_POST['nome'] === null) {
$checks = false;
}
$nome = htmlspecialchars($_POST['nome']);
} else {
$checks = false;
}
if (isset($_POST['cognome'])) {
if ($_POST['cognome'] === "" || $_POST['cognome'] === null) {
$checks = false;
}
$cognome = htmlspecialchars($_POST['cognome']);
} else {
$checks = false;
}
if (isset($_POST['data-nascita'])) {
if ($_POST['data-nascita'] === "" || $_POST['data-nascita'] === null) {
$checks = false;
}
$data_nascita = date("Y-m-d H:i:s", strtotime(htmlspecialchars($_POST['data-nascita'])));
} else {
$checks = false;
}
if (!$checks) {
// Codice HTTP 400: Bad Request
http_response_code(400);
echo '<code>Dati mancanti nella richiesta POST!</code>';
return;
}
$conn = mysqli_connect("localhost", "root", "", "film_attori");
if ($conn === false) {
exit("<code>Errore: impossibile stabilire una connessione " . mysqli_connect_error() . "</code>");
}
//echo "<code>Connesso: " . mysqli_get_host_info($conn) . "</code>";
// Collegamento al DB effettuato, ora facciamo l'inserimento
$insert = "INSERT INTO attori (nome, cognome, data_nascita) VALUES ('" . $nome . "','" . $cognome . "', '" . $data_nascita . "')";
if (mysqli_query($conn, $insert) === false) {
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
mysqli_close($conn);
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aggiungi attore - The NoSpace Cinema</title>
<!--- www.francescomancuso.it -->
<link rel="stylesheet" href="../style.css">
</head>
<body>
<header>
<div class="container">
<a href="../" style="text-decoration: none;">
<div>
<img src="../logo.png">
<h4>The NoSpace Cinema</h4>
</div>
</a>
<div>
<a href=".?s" style="font-size:16px">Vedi sorgente pagina</a>
<a href="../search/" class="button">Tutti i film</a>
</div>
</div>
</header>
<div class="container">
<div class="hero">
<h1>Aggiungi attore</h1>
</div>
</div>
<div class="page">
<div class="container">
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "<div class=\"message\">Query eseguita con successo!</div>";
} ?>
<form action="." method="POST">
<fieldset>
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome">
</fieldset>
<fieldset>
<label for="cognome">Cognome</label>
<input type="text" id="cognome" name="cognome">
</fieldset>
<fieldset>
<label for="data-nascita">Data di nascita</label>
<input type="date" id="data-nascita" name="data-nascita" max="0">
</fieldset>
<fieldset>
<button type="submit">Invia</button>
</fieldset>
</form>
</div>
</div>
<footer>
<div class="container">
<span>Realizzato da Francesco Giuseppe Mancuso - classe 5E - www.francescomancuso.it</span>
</div>
</footer>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

53
file/api/v1/img/index.php Normal file
View File

@@ -0,0 +1,53 @@
<?php
if (isset($_GET['s'])) {
highlight_file("index.php");
return;
}
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// Leggo il nome del film
if (isset($_GET['n'])) {
if (!is_string($_GET['n']) || $_GET['n'] === "" || $_GET['n'] === null) {
http_response_code(400);
echo '<code>Dati mancanti!</code>';
return;
}
$nome = htmlspecialchars($_GET['n']);
try {
$url = "https://imdb.iamidiotareyoutoo.com/search?q=" . urlencode($nome) . "&tt=&lsn=1&v=1";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($curl);
$json = json_decode($res);
} catch (Exception $e) {
header("Content-Type: image/png");
echo file_get_contents("film-placeholder.png");
return;
}
if ($res && $json && isset($json->description[0])) {
$imgUrl = $json->description[0]->{'#IMG_POSTER'};
$downloadImg = curl_init($imgUrl);
curl_setopt($downloadImg, CURLOPT_RETURNTRANSFER, true);
$imageData = curl_exec($downloadImg);
$contentType = curl_getinfo($downloadImg, CURLINFO_CONTENT_TYPE);
header("Content-Type: " . $contentType);
echo $imageData;
} else {
header("Content-Type: image/png");
echo file_get_contents("film-placeholder.png");
return;
}
} else {
http_response_code(400);
echo '<code>Dati mancanti!</code>';
return;
}
} else {
http_response_code(405);
echo '<code>Metodo non consentito!</code>';
return;
}

BIN
file/attore-list.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
file/attore.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
file/bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

BIN
file/film.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

159
file/film/index.php Normal file
View File

@@ -0,0 +1,159 @@
<?php
if (isset($_GET['s'])) {
highlight_file("index.php");
return;
}
// Ricerca film dal DB
$conn = mysqli_connect("localhost", "root", "", "film_attori");
if ($conn === false) {
exit("<code>Errore: impossibile stabilire una connessione " . mysqli_connect_error() . "</code>");
}
// Collegamento al DB effettuato
// Leggo ID
if (!isset($_GET['id'])) {
// Codice HTTP 404: Not found
http_response_code(404);
echo "<code>Film non trovato!</code>";
return;
}
if (!is_numeric($_GET['id']) || $_GET['id'] === "" || $_GET['id'] === null) {
// Codice HTTP 404: Not found
http_response_code(404);
echo "<code>Film non trovato!</code>";
return;
}
$idFilm = intval($_GET['id']);
$query = "SELECT film.id_film, film.nome, film.trama, film.durata, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere AND film.id_film = " . $idFilm . " ORDER BY film.data_uscita";
// Leggo i dati del film e faccio il JOIN per avere il nome del genere
$res = mysqli_query($conn, $query);
if ($res === false) {
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
$row = mysqli_fetch_array($res);
mysqli_free_result($res);
if (!$row) {
// Codice HTTP 404: Not found
http_response_code(404);
echo "<code>Film non trovato!</code>";
mysqli_close($conn);
return;
}
// Ottengo gli attori
$queryAttori = "SELECT attori.nome, attori.cognome, attori.data_nascita, recitare.ruolo FROM attori, recitare WHERE attori.id_attore = recitare.id_attore AND recitare.id_film = " . $idFilm . " ORDER BY recitare.ruolo DESC ";
$resAttori = mysqli_query($conn, $queryAttori);
if ($resAttori === false) {
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo $row["nome"]; ?> - Film - The NoSpace Cinema</title>
<!--- www.francescomancuso.it -->
<link rel="stylesheet" href="../style.css">
</head>
<body>
<header>
<div class="container">
<a href="../" style="text-decoration: none;">
<div>
<img src="../logo.png">
<h4>The NoSpace Cinema</h4>
</div>
</a>
<div>
<a href=".?s" style="font-size:16px">Vedi sorgente pagina</a>
<a href="../search/" class="button">Tutti i film</a>
</div>
</div>
</header>
<div class="container">
<div class="hero film" style="background-image: url('<?php echo "../api/v1/img/?n=" . urlencode($row['nome'] . ' ' . date('Y', strtotime($row['data_uscita']))); ?>')">
<div>
<h1><?php echo $row["nome"]; ?></h1>
<div class="genere">
<?php echo $row["genere"]; ?>
</div>
<div class="meta">
<span><?php echo date("d M Y", strtotime($row["data_uscita"])); ?></span>
<span>|</span>
<span><?php echo $row["durata"]; ?></span>
</div>
</div>
<img src="<?php echo "../api/v1/img/?n=" . urlencode($row['nome'] . ' ' . date('Y', strtotime($row['data_uscita']))); ?>">
</div>
</div>
<div class="page film">
<div class="container">
<h2>Trama</h2>
<div class="trama">
<?php echo $row['trama']; ?>
</div>
<h2>Attori</h2>
<div class="grid films">
<?php
$test = true;
while ($rowAttori = mysqli_fetch_array($resAttori)) {
$test = false;
?>
<div class="attore">
<img src="../attore-list.png">
<h5><?php echo $rowAttori['nome']; ?> <?php echo $rowAttori['cognome']; ?></h5>
<span>Nato/a il <?php echo date("d M Y", strtotime($rowAttori['data_nascita'])); ?></span>
<div class="ruolo">
<?php echo $rowAttori['ruolo']; ?>
</div>
</div>
<?php
}
mysqli_free_result($resAttori);
mysqli_close($conn);
?>
</div>
<?php
// Nessun risultato...
if ($test) {
echo "<div class=\"container\">Nessun attore trovato!</div>";
}
?>
</div>
</div>
<footer>
<div class="container">
<span>Realizzato da Francesco Giuseppe Mancuso - classe 5E - www.francescomancuso.it</span>
</div>
</footer>
</body>
</html>

59
file/index.html Normal file
View File

@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The NoSpace Cinema</title>
<!--- www.francescomancuso.it -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<div class="container">
<a href="." style="text-decoration: none;">
<div>
<img src="logo.png">
<h4>The NoSpace Cinema</h4>
</div>
</a>
<div>
<a href="search/" class="button">Tutti i film</a>
</div>
</div>
</header>
<div class="container">
<div class="hero">
<h1>Cinema</h1>
</div>
</div>
<div class="page">
<div class="container text-center">
<p>Seleziona pagina per proseguire</p>
</div>
<div class="container" style="max-width: 900px">
<div class="grid">
<a href="add/">
<div class="card">
<img src="attore.png">
<h2>Aggiungi attore nel DB</h2>
</div>
</a>
<a href="search/">
<div class="card">
<img src="film.png">
<h2>Scopri gli attori di un film</h2>
</div>
</a>
</div>
</div>
</div>
<footer>
<div class="container">
<span>Realizzato da Francesco Giuseppe Mancuso - classe 5E - www.francescomancuso.it</span>
</div>
</footer>
</body>
</html>

BIN
file/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

122
file/search/index.php Normal file
View File

@@ -0,0 +1,122 @@
<?php
if (isset($_GET['s'])) {
highlight_file("index.php");
return;
}
// Ricerca film dal DB
$conn = mysqli_connect("localhost", "root", "", "film_attori");
if ($conn === false) {
exit("<code>Errore: impossibile stabilire una connessione " . mysqli_connect_error() . "</code>");
}
// Collegamento al DB effettuato
$query = "SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere ORDER BY film.data_uscita";
$searched = "";
// Leggo la ricerca
if (isset($_GET['q'])) {
if (is_string($_GET['q']) && $_GET['q'] !== "" && $_GET['q'] !== null) {
$nome = htmlspecialchars($_GET['q']);
$searched = $nome;
$query = "SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere AND film.nome LIKE '%" . $nome . "%' ORDER BY film.data_uscita";
}
}
// Leggo i dati del film e faccio il JOIN per avere il nome del genere
$res = mysqli_query($conn, $query);
if ($res === false) {
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Film - The NoSpace Cinema</title>
<!--- www.francescomancuso.it -->
<link rel="stylesheet" href="../style.css">
</head>
<body>
<header>
<div class="container">
<a href="../" style="text-decoration: none;">
<div>
<img src="../logo.png">
<h4>The NoSpace Cinema</h4>
</div>
</a>
<div>
<a href=".?s" style="font-size:16px">Vedi sorgente pagina</a>
<a href="../search/" class="button">Tutti i film</a>
</div>
</div>
</header>
<div class="container">
<div class="hero search">
<h1>Film in sala</h1>
<form action="." method="GET">
<fieldset>
<input type="text" id="query" name="q" value="<?php echo $searched; ?>" placeholder="Scrivi il titolo...">
<button type="submit">Cerca</button>
</fieldset>
</form>
</div>
</div>
<div class="page">
<div class="container">
<div class="grid films">
<?php
$test = true;
while ($row = mysqli_fetch_array($res)) {
$test = false;
?>
<a href="<?php echo "../film?id=" . $row['id_film']; ?>">
<div class="film">
<img src="<?php echo "../api/v1/img/?n=" . urlencode($row['nome'] . ' ' . date('Y', strtotime($row['data_uscita']))); ?>">
<h5><?php echo $row['nome']; ?></h5>
<div class="genere">
<?php echo $row['genere']; ?>
</div>
</div>
</a>
<?php
}
mysqli_free_result($res);
mysqli_close($conn);
?>
</div>
<?php
// Nessun risultato...
if ($test) {
echo "<div class=\"container text-center\">Nessun risultato trovato!</div>";
}
?>
</div>
</div>
<footer>
<div class="container">
<span>Realizzato da Francesco Giuseppe Mancuso - classe 5E - www.francescomancuso.it</span>
</div>
</footer>
</body>
</html>

357
file/style.css Normal file
View File

@@ -0,0 +1,357 @@
@font-face {
font-family: "Isonorm";
src: url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.eot");
src: url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.eot?#iefix")format("embedded-opentype"),
url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.woff2")format("woff2"),
url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.woff")format("woff"),
url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.ttf")format("truetype"),
url("https://db.onlinewebfonts.com/t/855a3f407942ac7acbc26e4f98cc3ec0.svg#Isonorm W01 Regular")format("svg");
}
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body,
button,
input,
select {
font-family: "Isonorm", system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
body {
background-color: hsl(0, 0%, 5%);
color: #fff;
background: radial-gradient(hsl(0, 0%, 14%), hsl(0, 0%, 1%));
background-size: cover;
background-repeat: no-repeat;
min-height: 100vh;
font-size: 17px;
display: flex;
flex-direction: column;
}
.container {
width: 92%;
max-width: 1200px;
margin: 0 auto;
padding: 1rem 0;
}
h1 {
margin-bottom: 2rem;
}
a {
color: #fff;
}
form {
width: 100%;
max-width: 400px;
margin: 0 auto;
}
fieldset {
width: 100%;
border: none;
padding: 1rem 1rem;
}
input[type=text],
input[type=date] {
display: block;
width: 100%;
margin: 0;
border: 1px solid hsl(359, 80%, 43%);
outline: none;
padding: 0.5rem 0.5rem;
border-radius: 0.8rem;
background-color: rgba(2, 2, 2, 0.4);
color: #fff;
fill: #fff;
color-scheme: dark;
font-size: 18px;
}
.message {
background-color: green;
width: 100%;
max-width: 400px;
border-radius: 1rem;
padding: 1rem 1.2rem;
margin: 0 auto;
margin-bottom: 2rem;
}
input[type=text]:hover,
input[type=date]:hover {
border: 1px solid hsl(359, 80%, 43%);
}
form button {
margin: 0 auto;
}
button,
a.button {
display: block;
cursor: pointer;
background-color: #c51619;
border: none;
outline: none;
padding: 0.5rem 0.8rem;
border-radius: 0.8rem;
color: #fff;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 1px;
width: max-content;
text-decoration: none;
font-size: 16px;
}
label {
font-weight: bold;
display: block;
margin-bottom: 0.3rem;
}
header {
padding: 1rem 0;
font-size: 150%;
}
header img {
width: 80px;
}
header .container {
padding: 0;
}
header .container div,
header .container {
display: flex;
gap: 1rem;
align-items: center;
justify-content: space-between;
}
.page {
flex-grow: 1;
}
footer .container {
padding: 2rem 0;
text-align: center;
opacity: 0.8;
font-size: 90%;
}
.hero {
background: url('bg.jpg');
background-size: cover;
background-position: center;
padding: 6rem 2rem;
text-align: center;
font-size: 200%;
border-radius: 2rem;
background-color: rgba(2, 2, 2, 0.4);
background-blend-mode: overlay;
margin: 2rem 0;
}
.text-center {
text-align: center;
}
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.grid>a {
text-decoration: none;
}
.card {
padding: 2rem;
border-radius: 2rem;
text-align: center;
background-color: rgba(2, 2, 2, 1);
}
.card img {
width: 100px;
height: 100px;
object-fit: contain;
display: block;
margin: 0 auto;
margin-bottom: 2rem;
}
.films {
grid-template-columns: 1fr 1fr 1fr 1fr;
}
@media only screen and (max-width: 899px) {
.films {
grid-template-columns: 1fr 1fr 1fr;
}
}
@media only screen and (max-width: 599px) {
.films {
grid-template-columns: 1fr 1fr;
}
.hero.film>div {
padding: 6.2rem 0rem !important;
}
}
.films .film {
width: 100%;
text-align: center;
}
.films .film img {
width: 96%;
display: block;
border-radius: 1rem;
margin: 0 auto;
}
.films .film h5 {
font-size: 1.67rem;
margin: 1rem 0;
}
.films .film .genere {
text-transform: uppercase;
opacity: 0.8;
display: inline-block;
border-bottom: 2px solid hsl(359, 80%, 43%);
padding: 0.2rem 0;
}
@media only screen and (max-width: 499px) {
header {
font-size: 90%;
}
.grid {
grid-template-columns: 1fr;
}
}
.hero form fieldset {
display: flex;
gap: 1rem;
}
.hero.film {
padding: 2rem;
}
.hero.film {
background-color: rgba(2, 2, 2, 0.9);
display: flex;
align-items: center;
flex-direction: row;
flex-wrap: wrap;
gap: 2rem;
justify-content: space-between;
text-align: left;
text-wrap: balance;
}
.hero.film h1,
.hero.film .genere {
margin-bottom: 1rem;
}
.hero.film .genere {
display: block;
border-left: 2px solid hsl(359, 80%, 43%);
padding: 0 0.5rem;
font-size: 26px;
}
.hero.film>div {
padding: 6.2rem 2rem;
}
.hero.film img {
width: auto;
height: 100%;
max-height: 480px;
max-width: 100%;
display: block;
border-radius: 1rem;
margin: -4rem 0;
}
.hero.film .meta {
opacity: 0.6;
font-size: 20px;
}
.page.film {
font-size: 120%;
}
.page.film .container {
max-width: 900px;
}
.page.film h2 {
margin-bottom: 1rem;
}
.page.film .trama {
margin-bottom: 4rem;
}
.films .attore {
width: 100%;
text-align: center;
padding: 2rem 0;
}
.films .attore img {
width: 100px;
height: 100px;
object-fit: contain;
display: block;
margin: 0 auto;
margin-bottom: 2rem;
}
.films .attore h5 {
font-size: 1.67rem;
margin: 1rem 0;
}
.films .attore span {
display: block;
margin: 0 auto;
font-size: 80%;
opacity: 0.9;
}
.films .attore .ruolo {
text-transform: uppercase;
opacity: 0.8;
display: inline-block;
border-bottom: 2px solid hsl(359, 80%, 43%);
padding: 0.2rem 0;
margin: 1rem 0;
font-size: 80%;
}

0
use_db.txt Normal file
View File