Vous êtes sur la page 1sur 18

Proposition de correction de devoir de contrôle STI

Pratique n°6

Dispositif du Page ajout :

Dispositif du Page d’évaluation :


Dispositif du Page de consultation :

“index.html” :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>index</title>
<link rel="stylesheet" href="Styles.css">
<script src="Test.js"></script>
</head>
<body onload="dateauj()">
<header>
<h2 id="titre"></h2>
<h1>Evaluez nos projets en developpement web</h1>
</header>
<main>
<nav>
<ul>
<li><a href="ajout.html" target="e1">Ajout d'un
utilisateur</a></li>
<li><a href="evaluation.html" target="e1">Evaluation
d'un projet</a></li>
<li><a href="liste.php" target="e1">Consultation des
evaluations</a></li>
</ul>
</nav>
<section>
<iframe src="ajout.html" frameborder="0"
name="e1"></iframe>
</section>
</main>
</body>
<footer>** : Le code captcha et la date sont des supplements</footer>
</html>

“evaluation.html” :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Evaluation</title>
<script src="Test.js"></script>
</head>
<body>
<style>
body {
background-color: rgb(199, 247, 222);
font-size: 15px;
}
</style>
<form method="post" action="evaluation.php" onsubmit="return
verif2()">
<fieldset>
<legend>Evaluation d'un projet</legend>
<div>
<label>Pseudo</label>
<input type="text" id="pseudo" name="Pseudo">
</div>
<div>
<label>Projet évalué</label>
<select id="projeval" name="Projeval">
<option value="0">choisir un projet</option>
<option value="123">SW e-commerce</option>
<option value="456">SW de mode</option>
<option value="789">SW tutoriel</option>
</select>
</div>
<div>
<label>Note attribuées :</label><br>
Contenu <input type="number" id="con" name="Con">
Technique <input type="number" id="tec" name="Tec">
Ergonomie <input type="number" id="erg" name="Erg">
</div>
<div>
<label>Je ne suis pas un robot</label>
<input type="checkbox" id="rob" name="Rob">
</div>
<div>
<input type="reset" value="Annuler">
<input type="submit" value="Valider">
</div>
</fieldset>
</form>
</body>
</html>

“ajout.html” :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Ajout</title>
<script src="Test.js"></script>
</head>
<body onload="genererCapt()">
<style>
body {
background-color: rgb(199, 247, 222);
font-size: 15px;
}
</style>
<form method="post" action="ajout.php" onsubmit="return verif1()">
<fieldset>
<legend>Ajout d'un utilisateur</legend>
<div>
<label>Pseudo</label>
<input type="text" id="pseudo" name="Pseudo">
</div>
<div>
<label>Nom</label>
<input type="text" id="nom" name="Nom">
</div>
<div>
<label>Prénom</label>
<input type="text" id="pren" name="Pren">
</div>
<div>
<label>Genre</label>
<input type="radio" name="genre" id="radM"
value="F">Féminin
<input type="radio" name="genre" id="radF"
value="M">Masculin
</div>
<div>
<label>Pays</label>
<select id="pays" name="Pays">
<option value="0">choisir un pays</option>
<option value="1">Tunisie</option>
<option value="2">Algérie</option>
<option value="3">France</option>
</select>
</div>
<div>
<label>Captcha</label>
<label id="captc"></label>
<input type="text" name="Capt" id="captv">
</div>
<div>
<input type="reset" value="Annuler">
<input type="submit" value="Ajouter">
</div>
</fieldset>
</form>
</body>
</html>

“Test.js” :

function dateauj() {
document.getElementById('titre').innerText = 'Le ' + new
Date().getDate() + '/' + (new Date().getMonth()+1) + '/' + new
Date().getFullYear();
}

function genererCapt() {
var resultat = "";
for (i = 0; i < 6; i++ ) {
resultat = resultat +
String.fromCharCode(Math.floor(Math.random()*26)+65);
}
document.getElementById('captc').innerText = resultat;
}
// Cette fonction permet de vérifier si le paramètre ch est composé
uniquement par des lettres alphabétiques
function Alpha(ch)
{
ch=ch.toUpperCase();
var i=0;
while (ch.charAt(i)>="A" && ch.charAt(i)<="Z" && i<ch.length)
i++;
return i == ch.length;
}

function verif1()
{
var resultat= true;
// recupération des valeurs
var psu = document.getElementById('pseudo').value;
var nom = document.getElementById('nom').value;
var pre = document.getElementById('pren').value;
var genreM = document.getElementById('radM').checked;
var genreF = document.getElementById('radF').checked;
var pay = document.getElementById('pays').selectedIndex;

if(psu.charAt(2) != '-' || !(Alpha(psu.substr(0,2))) ||


Alpha(psu.substr(3, psu.length)))
{
resultat = false;
alert("Le pseudo n'est pas conforme");
}
else if ( nom.length < 3 || !(Alpha(nom)) )
{
resultat = false;
alert("Le nom doit avoir au minimum 3 lettres");
}
else if ( pre.length < 3 || !(Alpha(pre)) )
{
resultat = false;
alert("Le prénom doit avoir au minimum 3 lettres");
}
else if( genreM != true && genreF != true )
{
resultat = false;
alert("Spécifier le genre de l'utilisateur");
}
else if ( pay == '0' )
{
resultat = false;
alert("Il faut sélectionner un pays");
}
else if (document.getElementById('captv').value !=
document.getElementById('captc').innerText) {
resultat = false;
alert('le captcha est invalide');
}
return resultat;
}
function verif2()
{
var resultat= true;
// recupération des valeurs
var psu = document.getElementById('pseudo').value;
var projeval = document.getElementById('projeval').selectedIndex;
var con = document.getElementById('con').value;
var tec = document.getElementById('tec').value;
var erg = document.getElementById('erg').value;
var jnspur = document.getElementById('rob').checked;

if( psu.charAt(2) != '-' || !(Alpha(psu.substr(0,2))) ||


Alpha(psu.substr(3, psu.length)) )
{
resultat = false;
alert("Le pseudo n'est pas conforme");
}
else if (projeval == "0")
{
resultat = false;
alert("Il faut sélectionner un projet");
}
else if ( con < 0 || con > 10 )
{
resultat = false;
alert("Saisie obligatoire d'un entier positif <=10");
}
else if ( tec < 0 || tec > 10 )
{
resultat = false;
alert("Saisie obligatoire d'un entier positif <=10");
}
else if ( erg < 0 || erg > 10 )
{
resultat = false;
alert("Saisie obligatoire d'un entier positif <=10");
}
else if (!jnspur)
{
resultat = false;
alert("Il faut cocher la case ");
}
return resultat;
}

“liste.php” :

<?php
$conn = new mysqli('localhost', 'root', '', 'BDmedtahafourati');

$req = "SELECT Libelle, AVG(Contenu), AVG(Technique),


AVG(Ergonomie), COUNT(Pseudo)
FROM evaluation e, projet p
WHERE e.IdProj = p.IdProj
GROUP BY Libelle";
$res = $conn->query($req);
if ($res->num_rows != 0) {
?> <table border="1">
<tr>
<th>Projet</th>
<th>Contenu</th>
<th>Technique</th>
<th>Ergonomie</th>
<th>Nbr Evaluation</th>
</tr>
<?php
while ($l = $res->fetch_array()) {
echo
"<tr><td>$l[0]</td><td>$l[1]</td><td>$l[2]</td><td>$l[3]</td><td>$l[4]<
/td></tr>";
}
?>
</table>
<?php
} else {
echo "Pas de donnees <br>";
}
?>

“evaluation.php” :

<?php
$conn = new mysqli('localhost', 'root', '', 'BDmedtahafourati');

$psu = $_POST['Pseudo'];
$pjev = (integer)$_POST['Projeval'];
$con = $_POST['Con'];
$tec = $_POST['Tec'];
$erg = $_POST['Erg'];

$dat = date('Y-m-d', time());

$test2 = "SELECT Pseudo FROM utilisateur WHERE Pseudo = '$psu'";


$test3 = "SELECT Pseudo, IdProj FROM evaluation WHERE Pseudo =
'$psu' AND IdProj = $pjev";

if ($conn->query($test2)->num_rows == 0) {
echo "Utilisateur non inscrit";
} else if ($conn->query($test3)->num_rows != 0) {
echo "Vous avez deja evalue ce projet";
} else {
if ($conn->query("INSERT INTO evaluation (Pseudo, IdProj,
DateEval, Contenu, Technique, Ergonomie) VALUES ('$psu', $pjev, '$dat',
'$con', '$tec', '$erg')") === TRUE) {
echo "Evaluation enregistree avec succes";
} else {
echo "Erreur fatale".$conn->error;
}
}
?>

“ajout.php” :

<?php
$conn = new mysqli('localhost', 'root', '', 'BDmedtahafourati');

$psu = $_POST['Pseudo'];
$nom = $_POST['Nom'];
$pre = $_POST['Pren'];
$gen = $_POST['genre'];
$pays = (integer)$_POST['Pays'];

$test = "SELECT Pseudo FROM utilisateur WHERE Pseudo = '$psu'";

if ($conn->query($test)->num_rows != 0) {
echo "Pseudo deja existant";
} else {
if ($conn->query("INSERT INTO utilisateur (Pseudo, Nom, Prenom,
Genre, IdPays) VALUES ('$psu', '$nom', '$pre', '$gen', $pays)") ===
TRUE) {
echo "Utilisateur ajoutee avec succes";
} else {
echo "Erreur fatale".$conn->error;
}
}
?>

“bdmedtahafourati.sql” :

-- phpMyAdmin SQL Dump


-- version 4.7.0
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1
-- Généré le : mar. 02 mai 2023 à 11:52
-- Version du serveur : 5.7.17
-- Version de PHP : 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";


SET AUTOCOMMIT = 0;
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 */;

--
-- Base de données : `bdmedtahafourati`
--

-- --------------------------------------------------------

--
-- Structure de la table `evaluation`
--
CREATE TABLE `evaluation` (
`Pseudo` varchar(6) NOT NULL,
`IdProj` int(3) NOT NULL,
`DateEval` datetime NOT NULL,
`Contenu` int(2) NOT NULL,
`Technique` int(2) NOT NULL,
`Ergonomie` int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Déchargement des données de la table `evaluation`
--

INSERT INTO `evaluation` (`Pseudo`, `IdProj`, `DateEval`, `Contenu`,


`Technique`, `Ergonomie`) VALUES
('FR-456', 123, '2023-04-18 08:13:21', 8, 6, 7),
('FR-456', 456, '2023-04-21 16:31:19', 5, 7, 3),
('FR-456', 789, '2023-04-13 17:15:36', 9, 8, 6),
('TU-123', 789, '2023-04-13 11:24:27', 4, 6, 7),
('TU-321', 456, '2023-04-16 17:38:16', 6, 8, 7),
('TU-321', 789, '2023-04-08 16:33:15', 8, 4, 6);

-- --------------------------------------------------------

--
-- Structure de la table `pays`
--

CREATE TABLE `pays` (


`idpays` int(11) NOT NULL,
`libpays` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Déchargement des données de la table `pays`
--
INSERT INTO `pays` (`idpays`, `libpays`) VALUES
(1, 'Tunisie'),
(2, 'Algerie'),
(3, 'France');

-- --------------------------------------------------------

--
-- Structure de la table `projet`
--

CREATE TABLE `projet` (


`IdProj` int(3) NOT NULL,
`Libelle` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Déchargement des données de la table `projet`
--

INSERT INTO `projet` (`IdProj`, `Libelle`) VALUES


(123, 'SW e-commerce'),
(456, 'SW de mode'),
(789, 'SW tutoriel');

-- --------------------------------------------------------

--
-- Structure de la table `utilisateur`
--

CREATE TABLE `utilisateur` (


`Pseudo` varchar(6) NOT NULL,
`Nom` varchar(20) NOT NULL,
`Prenom` varchar(20) NOT NULL,
`Genre` varchar(1) NOT NULL,
`IdPays` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Déchargement des données de la table `utilisateur`
--

INSERT INTO `utilisateur` (`Pseudo`, `Nom`, `Prenom`, `Genre`,


`IdPays`) VALUES
('FR-456', 'Delon', 'Jean', 'M', 3),
('TU-123', 'Missaoui', 'Basma', 'F', 1),
('TU-321', 'Amri', 'Salah', 'M', 1);

--
-- Index pour les tables déchargées
--

--
-- Index pour la table `evaluation`
--
ALTER TABLE `evaluation`
ADD PRIMARY KEY (`Pseudo`,`IdProj`),
ADD KEY `IdProj` (`IdProj`);

--
-- Index pour la table `pays`
--
ALTER TABLE `pays`
ADD PRIMARY KEY (`idpays`);

--
-- Index pour la table `projet`
--
ALTER TABLE `projet`
ADD PRIMARY KEY (`IdProj`);

--
-- Index pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
ADD PRIMARY KEY (`Pseudo`),
ADD KEY `IdPays` (`IdPays`);

--
-- AUTO_INCREMENT pour les tables déchargées
--

--
-- AUTO_INCREMENT pour la table `pays`
--
ALTER TABLE `pays`
MODIFY `idpays` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- Contraintes pour les tables déchargées
--

--
-- Contraintes pour la table `evaluation`
--
ALTER TABLE `evaluation`
ADD CONSTRAINT `evaluation_ibfk_1` FOREIGN KEY (`Pseudo`) REFERENCES
`utilisateur` (`Pseudo`),
ADD CONSTRAINT `evaluation_ibfk_2` FOREIGN KEY (`IdProj`) REFERENCES
`projet` (`IdProj`);

--
-- Contraintes pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
ADD CONSTRAINT `utilisateur_ibfk_1` FOREIGN KEY (`IdPays`) REFERENCES
`pays` (`idpays`) ON DELETE CASCADE ON UPDATE CASCADE;
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 */;

“Styles.css” :

header{
background-color: #11abf33f;
}
h1{
text-align: center;
}

h1:hover {
size: 40px;
}
nav {
background-color: #d9f0f5;
width: 30%;
height: 370px;
float: left;
padding-top: 10%;
}
nav a{
display: block;
text-decoration: none;
color: black;
border-bottom: 2px solid transparent;
padding: 10px 0px;
}
section {
background-color: #eafafa;
width: 70%;
height: 480px;
float: left;
}
iframe {
width: 99%;
height: 470px;
}

Proposée par Med Taha Fourati

Vous aimerez peut-être aussi