La Traccia dell'Esame 2023, ritenuta dagli studenti lineare e fattibile, chiede di realizzare per una scuola una piattaforma web per la fruizione di educational games (videogiochi in ambito educativo), per migliorare l'apprendimento nelle varie materie.
Questa è la mia soluzione della prima parte in formato pdf.
Apri PDF
 
Download PDF
Il sorgente PHP per la risoluzione del quesito numero 6.
<?php session_start(); if(isset($_POST['nome'])) $nome =$_POST['nome']; if(isset($_POST['materia'])) $materia =$_POST['materia']; $id_docente = $_SESSION['id_utente']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "2023"; // Creare la connessione $conn = new mysqli($servername, $username, $password, $dbname); // Check della connessione if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //creo codice classe random $codice_classe = ''; for($i = 1; $i <= 6; $i++) { $codice_ascii = rand(65,90); //range lettere maiuscole $codice_classe = $codice_classe . chr($codice_ascii); } //creazione link con il codice classe $link = "http://piattaformaesame2023/" . $codice_classe; $sql = "INSERT INTO classi(codice, nome, materia, link, id_docente) ". " VALUES ('". $codice_classe . "' ,'".$nome."' ,'".$materia."' ,'".$link."',".$id_docente.");"; if ($conn->query($sql) === TRUE) { echo "<br>Classe inserita correttamente! " ; } else { echo "Errore durante la creazione: " . $sql . "<br>" . $conn->error ."Si prega di ritentare."; //Per scongiurare il rischio molto remoto, così remoto da rendere inutile un controllo //ma in caso di chiave primaria duplicata si richiede di reinserire la classe } $conn->close(); ?>
Il sorgente HTML della form per la risoluzione del quesito numero 6
<html lang="it"> <head> <title>Esame 2023</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> </head> <body> <form class="form-horizontal" action="insclasse2023.php" method="post" > <fieldset> <!-- Form Name --> <legend>Creazione Classe Virtuale</legend> <!-- Text input--> <div class="form-group"> <label class="col-md-4 control-label" for="nome">Nome</label> <div class="col-md-4"> <input id="nome" name="nome" type="text" placeholder="nome classe" class="form-control input-md" required=""> </div> </div> <!-- Text input--> <div class="form-group"> <label class="col-md-4 control-label" for="materia">Materia</label> <div class="col-md-4"> <input id="materia" name="materia" type="text" placeholder="materia" class="form-control input-md" required=""> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-4 control-label" for=""></label> <div class="col-md-4"> <button id="" name="" class="btn btn-primary">Crea</button> </div> </div> </fieldset> </form> </body> </html>
Script SQL del Database
-- phpMyAdmin SQL Dump -- version 5.2.0 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Generation Time: Jun 23, 2023 at 12:36 PM -- Server version: 10.4.21-MariaDB -- PHP Version: 7.4.29 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: `2023` -- -- -------------------------------------------------------- -- -- Table structure for table `Argomenti` -- CREATE TABLE `Argomenti` ( `Codice` varchar(4) NOT NULL, `Descrizione` varchar(64) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `classi` -- CREATE TABLE `classi` ( `codice` varchar(6) NOT NULL, `nome` varchar(4) NOT NULL, `materia` varchar(64) NOT NULL, `link` varchar(128) NOT NULL, `id_docente` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `Docenti` -- CREATE TABLE `Docenti` ( `id` int(4) NOT NULL, `nome` varchar(64) NOT NULL, `cognome` varchar(64) NOT NULL, `login` varchar(24) NOT NULL, `password` varchar(128) NOT NULL, `email` varchar(64) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `premi` -- CREATE TABLE `premi` ( `id_studente` int(11) NOT NULL, `cod_vodeogioco` int(11) NOT NULL, `monete` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `studente_classe` -- CREATE TABLE `studente_classe` ( `id_studente` int(11) NOT NULL, `cod_classe` varchar(6) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `Studenti` -- CREATE TABLE `Studenti` ( `id` int(4) NOT NULL, `nome` varchar(64) NOT NULL, `cognome` varchar(64) NOT NULL, `login` varchar(24) NOT NULL, `password` varchar(128) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `videogiochi` -- CREATE TABLE `videogiochi` ( `codice` int(5) NOT NULL, `titolo` varchar(64) NOT NULL, `Desc_breve` varchar(160) NOT NULL, `Desc_lunga` text NOT NULL, `max_monete` int(5) NOT NULL, `URL_img1` varchar(128) NOT NULL, `URL_img2` varchar(128) DEFAULT NULL, `URL_img3` varchar(128) DEFAULT NULL, `link` varchar(128) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `videos_argomento` -- CREATE TABLE `videos_argomento` ( `cod_videogiochi` int(11) NOT NULL, `cod_argomento` varchar(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `videos_classe` -- CREATE TABLE `videos_classe` ( `cod_classe` varchar(6) NOT NULL, `cod_videogioco` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Indexes for dumped tables -- -- -- Indexes for table `Argomenti` -- ALTER TABLE `Argomenti` ADD PRIMARY KEY (`Codice`); -- -- Indexes for table `classi` -- ALTER TABLE `classi` ADD PRIMARY KEY (`codice`), ADD KEY `docente` (`id_docente`); -- -- Indexes for table `Docenti` -- ALTER TABLE `Docenti` ADD PRIMARY KEY (`id`); -- -- Indexes for table `premi` -- ALTER TABLE `premi` ADD KEY `stud` (`id_studente`), ADD KEY `videos` (`cod_vodeogioco`); -- -- Indexes for table `studente_classe` -- ALTER TABLE `studente_classe` ADD KEY `cod_classe` (`cod_classe`), ADD KEY `id_studente` (`id_studente`); -- -- Indexes for table `Studenti` -- ALTER TABLE `Studenti` ADD PRIMARY KEY (`id`); -- -- Indexes for table `videogiochi` -- ALTER TABLE `videogiochi` ADD PRIMARY KEY (`codice`); -- -- Indexes for table `videos_argomento` -- ALTER TABLE `videos_argomento` ADD KEY `video` (`cod_videogiochi`), ADD KEY `arg` (`cod_argomento`); -- -- Indexes for table `videos_classe` -- ALTER TABLE `videos_classe` ADD KEY `cod_videogioco` (`cod_videogioco`), ADD KEY `cod_classe` (`cod_classe`); -- -- Constraints for dumped tables -- -- -- Constraints for table `classi` -- ALTER TABLE `classi` ADD CONSTRAINT `docente` FOREIGN KEY (`id_docente`) REFERENCES `Docenti` (`id`); -- -- Constraints for table `premi` -- ALTER TABLE `premi` ADD CONSTRAINT `stud` FOREIGN KEY (`id_studente`) REFERENCES `Studenti` (`id`), ADD CONSTRAINT `videos` FOREIGN KEY (`cod_vodeogioco`) REFERENCES `videogiochi` (`codice`); -- -- Constraints for table `studente_classe` -- ALTER TABLE `studente_classe` ADD CONSTRAINT `studente_classe_ibfk_1` FOREIGN KEY (`cod_classe`) REFERENCES `classi` (`codice`), ADD CONSTRAINT `studente_classe_ibfk_2` FOREIGN KEY (`id_studente`) REFERENCES `Studenti` (`id`); -- -- Constraints for table `videos_argomento` -- ALTER TABLE `videos_argomento` ADD CONSTRAINT `arg` FOREIGN KEY (`cod_argomento`) REFERENCES `Argomenti` (`Codice`), ADD CONSTRAINT `video` FOREIGN KEY (`cod_videogiochi`) REFERENCES `videogiochi` (`codice`); -- -- Constraints for table `videos_classe` -- ALTER TABLE `videos_classe` ADD CONSTRAINT `videos_classe_ibfk_1` FOREIGN KEY (`cod_videogioco`) REFERENCES `videogiochi` (`codice`), ADD CONSTRAINT `videos_classe_ibfk_2` FOREIGN KEY (`cod_classe`) REFERENCES `classi` (`codice`); 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 */;