par
sadeq » 06 mai 2009, 11:42
Pour plus de compréhension, voici un exemple que j'ai adapté à ton cas:
La base de données est nommée QCM:
Code : Tout sélectionner
-- phpMyAdmin SQL Dump
-- version 3.1.3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 06 Mai 2009 à 11:27
-- Version du serveur: 5.1.32
-- Version de PHP: 5.2.9-1
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `qcm`
--
-- --------------------------------------------------------
--
-- Structure de la table `affirmations`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `affirmations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`valeur` varchar(255) DEFAULT NULL,
`points` int(11) DEFAULT NULL,
`idtheme` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `aff_unique` (`idtheme`,`valeur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=50 ;
--
-- Contenu de la table `affirmations`
--
INSERT INTO `affirmations` (`id`, `valeur`, `points`, `idtheme`) VALUES
(1, 'Souper aux chandelles', 4, 1),
(2, 'Parc d''amusement', 2, 1),
(3, 'Patins à roues alignées au parc', 5, 1),
(4, 'Concert Rock', 1, 1),
(5, 'Cinéma', 3, 1),
(6, 'Rock and roll', 2, 2),
(7, 'Alternatif', 1, 2),
(8, 'Soft Rock', 4, 2),
(9, 'Classique', 5, 2),
(10, 'Chrétien', 3, 2),
(11, 'Comédie', 2, 3),
(12, 'Horreur', 1, 3),
(13, 'Comédie musicale', 3, 3),
(14, 'Romantique', 4, 3),
(15, 'Documentaire', 5, 3),
(16, 'Serveur', 4, 4),
(17, 'Sportif', 5, 4),
(18, 'Professeur', 3, 4),
(19, 'Policier', 2, 4),
(20, 'Barman', 1, 4),
(21, 'Entraînement', 5, 5),
(22, 'Lecture', 4, 5),
(23, 'Télévision', 2, 5),
(24, 'Radio', 1, 5),
(25, 'Dormir', 3, 5),
(26, 'Jaune', 1, 6),
(27, 'Blanc', 5, 6),
(28, 'Bleu poudre', 3, 6),
(29, 'Sarcelle', 2, 6),
(30, 'Rouge', 4, 6),
(31, 'Crème glacée', 3, 7),
(32, 'Pizza', 2, 7),
(33, 'Sushi', 1, 7),
(34, 'Pâtes', 4, 7),
(35, 'Salade', 5, 7),
(36, 'Halloween', 1, 8),
(37, 'Noël', 3, 8),
(38, 'Nouvel an', 2, 8),
(39, 'St-valentin', 4, 8),
(40, 'Action de grâce', 5, 8),
(41, 'Paris', 4, 9),
(42, 'Espagne', 5, 9),
(43, 'Las Vegas', 1, 9),
(44, 'Hawaï', 4, 9),
(45, 'Hollywood', 3, 9),
(46, 'Quelqu''un d''intelligent', 5, 10),
(47, 'Quelqu''un qui est très beau', 2, 10),
(48, 'Quelqu''un qui s''amuse toujours', 1, 10),
(49, 'Quelqu''un de très émotif', 3, 10);
-- --------------------------------------------------------
--
-- Structure de la table `reponses`
--
-- Création: Mer 06 Mai 2009 à 11:27
-- Dernière modification: Mer 06 Mai 2009 à 11:27
-- Dernière vérification: Mer 06 Mai 2009 à 11:27
--
CREATE TABLE IF NOT EXISTS `reponses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idutil` varchar(255) DEFAULT NULL,
`idaff` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `reponse_unique` (`idutil`,`idaff`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Contenu de la table `reponses`
--
-- --------------------------------------------------------
--
-- Structure de la table `test`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`intitule` varchar(255) DEFAULT NULL,
`regles` varchar(255) DEFAULT NULL,
`interpretation` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `test`
--
INSERT INTO `test` (`id`, `intitule`, `regles`, `interpretation`) VALUES
(1, 'Vous êtes vous déjà demandé quel bonhomme de dessin animé vous étiez ? Une équipe de chercheurs ont analysé les personnalités des Looney Tunes, Répondez à chaque question la réponse la plus près de la réalité présentement, additionnez ensuite les points',
'', '');
-- --------------------------------------------------------
--
-- Structure de la table `themes`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `themes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`intitule` varchar(255) DEFAULT NULL,
`idtest` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Contenu de la table `themes`
--
INSERT INTO `themes` (`id`, `intitule`, `idtest`) VALUES
(1, 'Quelle serait votre soirée rencontre parfaite ?', 1),
(2, 'Quel est votre style musical favori ?', 1),
(3, 'Quel est votre genre de film préféré ?', 1),
(4, 'Quel emploi choisiriez vous ? (Si les choix suivants étaient les seuls que vous auriez)', 1),
(5, 'Que feriez vous si vous aviez une heure à perdre ?', 1),
(6, 'Quelle est votre couleur préférée ?', 1),
(7, 'Que mangeriez vous maintenant ?', 1),
(8, 'Quelle est votre fête préférée ?', 1),
(9, 'Quelle serait votre destination idéale ?', 1),
(10, 'Avec qui préféreriez vous passer du temps?', 1);
Le programme est composé de 3 pages :
- 1. Introduction au test (introduireAuTest.php) qui identifie l'utilisateur et lui permet d'ouvrir le test.
Dans cet exemple, j'ai utilisé un seul test et un seul utilisateur dont peut importe le login et le mot de passe, juste pour l'exemple.
2. Commencer le test (commencerTest.php) : où l'utilisateur choisi des thèmes et répond aux questions affichées puis valide pour aller sur la dernière page de validation.
3. La validation du test (validerTest.php) qui enregistre les réponses de l'utilisateur dans la base et affiche son résultat.
Et voici les scripts des 3 pages qui sont reliées par une SESSION:
1. introduireAuTest.php
<?php
// La session utilisateur est activée
session_start();
// Identifier l'utilisateur
if (isset($_POST["login"]) && isset($_POST["pwd"])){
$user = chercherUser($_POST["login"], $_POST["pwd"]);
if ($user != null){
$_SESSION["idutilisateur"] = $user["id"];
$_SESSION["nomutilisateur"] = $user["nom"];
header("Location: commencerTest.php");
exit();
}
}
?>
<div id="divuser">
<form id="formuser" name="formuser" method="POST" action="">
<h1>Identifiez-vous pour commencer le test</h1>
<ul class="user">
<p><input type="text" id="login" name="login" value="" /></p>
<p><input type="password" id="pwd" name="pwd" value="" /></p>
</ul>
<input type="submit" value="Commencer le Test" />
<p>Veuillez saisir un login et un mot de passe valides.</p>
</form>
</div>
<?php
function chercherUser($login, $pwd){
// à construire ...
return array("id"=>"u1", "nom"=>"Dupont Jean"); // juste pour le test de ce programme
}
?>
2. commencerTest.php
<?php
// La session utilisateur est activée
session_start();
// La base de données est ouverte
mysql_select_db("QCM", mysql_connect("localhost", "root"));
// L'utilisateur qui passe le test doit être déjà identifié dans un autre contexte
if (! isset($_SESSION["idutilisateur"])){
// Non identifié s'abstenir !!
echo "<p>Veuillez vous identifier avant de commencer le test!</p>";
exit();
}
// Les thèmes du test doivent être sélectionnés par POST du formulaire ou existent déjà dans la SESSION
$liste_themes_coches = isset($_POST["liste_themes_coches"]) ? $_POST["liste_themes_coches"]
: (isset($_SESSION["liste_themes_coches"]) ? $_SESSION["liste_themes_coches"] : null);
// Mettre à jour les thèmes mémorisés dans la SESSION
$_SESSION["liste_themes_coches"] = $liste_themes_coches;
// Afficher la liste des thèmes à cocher ou cochés si déjà fait (permet la modification des thèmes choisis)
$requete = "SELECT * FROM themes ORDER BY intitule";
$res = mysql_query($requete);
echo '<div id="divthemes">
<form id="formthemes" name="formthemes" method="POST" action="">
<h1>Liste des thèmes du test</h1>
<ul class="theme">';
while ($res && $themes = mysql_fetch_assoc($res)){
// cocher les cases des thèmes déjà sélectionnés
$case_cochee = "";
if ($liste_themes_coches != null && isset($liste_themes_coches[$themes['id']])){
$case_cochee = " checked=\"checked\" ";
}
echo '<input type="checkbox" name="liste_themes_coches['.$themes['id'].']" value="'.$themes['intitule'].'" '.$case_cochee.' />'.$themes['intitule'].'<br />';
}
echo '</ul>
<input type="submit" value="Sélectionnez les thèmes du test" />
<p>Veuillez sélectionner des thèmes du test!</p>
</form>
</div>';
// Afficher les questions par thème sélectionné
if ($liste_themes_coches != null && is_array($liste_themes_coches)){
echo '<div id="divtest">
<form id="formtest" name="formtest" method="POST" action="validerTest.php">
<h1>Questions</h1><ul class="theme">';
foreach ($liste_themes_coches as $idtheme=>$intitule){
echo "<li>".$intitule."</li>\n";
$resaff=mysql_query("SELECT * FROM affirmations WHERE idtheme=".$idtheme);
echo '<ul class="affirmation">';
while ($affirmation = mysql_fetch_assoc($resaff)){
// cocher les cases des thèmes déjà sélectionnés
$case_cochee = "";
if (isset($_POST["aff"]) && isset($_POST["aff"][$idtheme]) && in_array($affirmation['id'], $_POST["aff"][$idtheme])){
$case_cochee = " checked=\"checked\" ";
}
echo '<input type="checkbox" name="aff['.$idtheme.'][]" value="'.$affirmation['id'].'" '.$case_cochee.' />'.$affirmation['valeur'].' - '.$affirmation['points'].' point(s)<br />';
}
echo '</ul>';
}
echo '</ul>
<input type="submit" value="Validez vos réponses" />
</form>
</div>';
}
?>
1. validerTest.php
<?php
// La session utilisateur est activée
session_start();
// La base de données est ouverte
mysql_select_db("QCM", mysql_connect("localhost", "root"));
// L'utilisateur qui passe le test doit être déjà identifié dans un autre contexte
if (! isset($_SESSION["idutilisateur"])){
// Non identifié s'abstenir !!
echo "<p>Veuillez vous identifier avant de commencer le test!</p>";
exit();
}
// Les thèmes du test doivent être sélectionnés par POST du formulaire ou existent déjà dans la SESSION
$liste_themes_coches = isset($_POST["liste_themes_coches"]) ? $_POST["liste_themes_coches"]
: (isset($_SESSION["liste_themes_coches"]) ? $_SESSION["liste_themes_coches"] : null);
// Mettre à jour les thèmes mémorisés dans la SESSION
$_SESSION["liste_themes_coches"] = $liste_themes_coches;
// Enregistrer et Afficher les réponses aux questions par thème sélectionné
if ($liste_themes_coches != null && is_array($liste_themes_coches)){
echo '<div id="divtest">
<h1>Réponses enregistrées</h1><ul class="theme">';
$somme_points = 0;
foreach ($liste_themes_coches as $idtheme=>$intitule){
echo "<li>".$intitule."</li>\n";
if (isset($_POST["aff"]) && is_array($_POST["aff"][$idtheme])){
foreach ($_POST["aff"][$idtheme] as $idaff){
//On insère les resultats du test de la personne testee
$reqteste = sprintf("INSERT INTO reponses (idutil, idaff)
VALUES ('%s', '%s')", $_SESSION['idutilisateur'], $idaff);
mysql_query($reqteste);
$resaff=mysql_query("SELECT * FROM affirmations WHERE id=".$idaff);
echo '<ul class="affirmation">';
while ($affirmation = mysql_fetch_assoc($resaff)){
echo '<li>'.$affirmation['valeur'].' - '.$affirmation['points'].' point(s)</li>';
$somme_points += $affirmation['points'];
}
echo '</ul>';
}
}
}
echo '</ul>
<h3>Vous avez ' . $somme_points . ' point(s)</h3>
</div>';
}
?>
Bonne lecture

Pour plus de compréhension, voici un exemple que j'ai adapté à ton cas:
La base de données est nommée QCM:
[code]
-- phpMyAdmin SQL Dump
-- version 3.1.3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 06 Mai 2009 à 11:27
-- Version du serveur: 5.1.32
-- Version de PHP: 5.2.9-1
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `qcm`
--
-- --------------------------------------------------------
--
-- Structure de la table `affirmations`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `affirmations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`valeur` varchar(255) DEFAULT NULL,
`points` int(11) DEFAULT NULL,
`idtheme` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `aff_unique` (`idtheme`,`valeur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=50 ;
--
-- Contenu de la table `affirmations`
--
INSERT INTO `affirmations` (`id`, `valeur`, `points`, `idtheme`) VALUES
(1, 'Souper aux chandelles', 4, 1),
(2, 'Parc d''amusement', 2, 1),
(3, 'Patins à roues alignées au parc', 5, 1),
(4, 'Concert Rock', 1, 1),
(5, 'Cinéma', 3, 1),
(6, 'Rock and roll', 2, 2),
(7, 'Alternatif', 1, 2),
(8, 'Soft Rock', 4, 2),
(9, 'Classique', 5, 2),
(10, 'Chrétien', 3, 2),
(11, 'Comédie', 2, 3),
(12, 'Horreur', 1, 3),
(13, 'Comédie musicale', 3, 3),
(14, 'Romantique', 4, 3),
(15, 'Documentaire', 5, 3),
(16, 'Serveur', 4, 4),
(17, 'Sportif', 5, 4),
(18, 'Professeur', 3, 4),
(19, 'Policier', 2, 4),
(20, 'Barman', 1, 4),
(21, 'Entraînement', 5, 5),
(22, 'Lecture', 4, 5),
(23, 'Télévision', 2, 5),
(24, 'Radio', 1, 5),
(25, 'Dormir', 3, 5),
(26, 'Jaune', 1, 6),
(27, 'Blanc', 5, 6),
(28, 'Bleu poudre', 3, 6),
(29, 'Sarcelle', 2, 6),
(30, 'Rouge', 4, 6),
(31, 'Crème glacée', 3, 7),
(32, 'Pizza', 2, 7),
(33, 'Sushi', 1, 7),
(34, 'Pâtes', 4, 7),
(35, 'Salade', 5, 7),
(36, 'Halloween', 1, 8),
(37, 'Noël', 3, 8),
(38, 'Nouvel an', 2, 8),
(39, 'St-valentin', 4, 8),
(40, 'Action de grâce', 5, 8),
(41, 'Paris', 4, 9),
(42, 'Espagne', 5, 9),
(43, 'Las Vegas', 1, 9),
(44, 'Hawaï', 4, 9),
(45, 'Hollywood', 3, 9),
(46, 'Quelqu''un d''intelligent', 5, 10),
(47, 'Quelqu''un qui est très beau', 2, 10),
(48, 'Quelqu''un qui s''amuse toujours', 1, 10),
(49, 'Quelqu''un de très émotif', 3, 10);
-- --------------------------------------------------------
--
-- Structure de la table `reponses`
--
-- Création: Mer 06 Mai 2009 à 11:27
-- Dernière modification: Mer 06 Mai 2009 à 11:27
-- Dernière vérification: Mer 06 Mai 2009 à 11:27
--
CREATE TABLE IF NOT EXISTS `reponses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idutil` varchar(255) DEFAULT NULL,
`idaff` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `reponse_unique` (`idutil`,`idaff`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Contenu de la table `reponses`
--
-- --------------------------------------------------------
--
-- Structure de la table `test`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`intitule` varchar(255) DEFAULT NULL,
`regles` varchar(255) DEFAULT NULL,
`interpretation` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `test`
--
INSERT INTO `test` (`id`, `intitule`, `regles`, `interpretation`) VALUES
(1, 'Vous êtes vous déjà demandé quel bonhomme de dessin animé vous étiez ? Une équipe de chercheurs ont analysé les personnalités des Looney Tunes, Répondez à chaque question la réponse la plus près de la réalité présentement, additionnez ensuite les points',
'', '');
-- --------------------------------------------------------
--
-- Structure de la table `themes`
--
-- Création: Mer 06 Mai 2009 à 11:25
-- Dernière modification: Mer 06 Mai 2009 à 11:25
--
CREATE TABLE IF NOT EXISTS `themes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`intitule` varchar(255) DEFAULT NULL,
`idtest` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Contenu de la table `themes`
--
INSERT INTO `themes` (`id`, `intitule`, `idtest`) VALUES
(1, 'Quelle serait votre soirée rencontre parfaite ?', 1),
(2, 'Quel est votre style musical favori ?', 1),
(3, 'Quel est votre genre de film préféré ?', 1),
(4, 'Quel emploi choisiriez vous ? (Si les choix suivants étaient les seuls que vous auriez)', 1),
(5, 'Que feriez vous si vous aviez une heure à perdre ?', 1),
(6, 'Quelle est votre couleur préférée ?', 1),
(7, 'Que mangeriez vous maintenant ?', 1),
(8, 'Quelle est votre fête préférée ?', 1),
(9, 'Quelle serait votre destination idéale ?', 1),
(10, 'Avec qui préféreriez vous passer du temps?', 1);
[/code]
Le programme est composé de 3 pages :
[list]
1. Introduction au test (introduireAuTest.php) qui identifie l'utilisateur et lui permet d'ouvrir le test.
Dans cet exemple, j'ai utilisé un seul test et un seul utilisateur dont peut importe le login et le mot de passe, juste pour l'exemple.
2. Commencer le test (commencerTest.php) : où l'utilisateur choisi des thèmes et répond aux questions affichées puis valide pour aller sur la dernière page de validation.
3. La validation du test (validerTest.php) qui enregistre les réponses de l'utilisateur dans la base et affiche son résultat.
[/list]
Et voici les scripts des 3 pages qui sont reliées par une SESSION:
[b]1. introduireAuTest.php[/b]
[php]
<?php
// La session utilisateur est activée
session_start();
// Identifier l'utilisateur
if (isset($_POST["login"]) && isset($_POST["pwd"])){
$user = chercherUser($_POST["login"], $_POST["pwd"]);
if ($user != null){
$_SESSION["idutilisateur"] = $user["id"];
$_SESSION["nomutilisateur"] = $user["nom"];
header("Location: commencerTest.php");
exit();
}
}
?>
<div id="divuser">
<form id="formuser" name="formuser" method="POST" action="">
<h1>Identifiez-vous pour commencer le test</h1>
<ul class="user">
<p><input type="text" id="login" name="login" value="" /></p>
<p><input type="password" id="pwd" name="pwd" value="" /></p>
</ul>
<input type="submit" value="Commencer le Test" />
<p>Veuillez saisir un login et un mot de passe valides.</p>
</form>
</div>
<?php
function chercherUser($login, $pwd){
// à construire ...
return array("id"=>"u1", "nom"=>"Dupont Jean"); // juste pour le test de ce programme
}
?>
[/php]
[b]2. commencerTest.php[/b]
[php]
<?php
// La session utilisateur est activée
session_start();
// La base de données est ouverte
mysql_select_db("QCM", mysql_connect("localhost", "root"));
// L'utilisateur qui passe le test doit être déjà identifié dans un autre contexte
if (! isset($_SESSION["idutilisateur"])){
// Non identifié s'abstenir !!
echo "<p>Veuillez vous identifier avant de commencer le test!</p>";
exit();
}
// Les thèmes du test doivent être sélectionnés par POST du formulaire ou existent déjà dans la SESSION
$liste_themes_coches = isset($_POST["liste_themes_coches"]) ? $_POST["liste_themes_coches"]
: (isset($_SESSION["liste_themes_coches"]) ? $_SESSION["liste_themes_coches"] : null);
// Mettre à jour les thèmes mémorisés dans la SESSION
$_SESSION["liste_themes_coches"] = $liste_themes_coches;
// Afficher la liste des thèmes à cocher ou cochés si déjà fait (permet la modification des thèmes choisis)
$requete = "SELECT * FROM themes ORDER BY intitule";
$res = mysql_query($requete);
echo '<div id="divthemes">
<form id="formthemes" name="formthemes" method="POST" action="">
<h1>Liste des thèmes du test</h1>
<ul class="theme">';
while ($res && $themes = mysql_fetch_assoc($res)){
// cocher les cases des thèmes déjà sélectionnés
$case_cochee = "";
if ($liste_themes_coches != null && isset($liste_themes_coches[$themes['id']])){
$case_cochee = " checked=\"checked\" ";
}
echo '<input type="checkbox" name="liste_themes_coches['.$themes['id'].']" value="'.$themes['intitule'].'" '.$case_cochee.' />'.$themes['intitule'].'<br />';
}
echo '</ul>
<input type="submit" value="Sélectionnez les thèmes du test" />
<p>Veuillez sélectionner des thèmes du test!</p>
</form>
</div>';
// Afficher les questions par thème sélectionné
if ($liste_themes_coches != null && is_array($liste_themes_coches)){
echo '<div id="divtest">
<form id="formtest" name="formtest" method="POST" action="validerTest.php">
<h1>Questions</h1><ul class="theme">';
foreach ($liste_themes_coches as $idtheme=>$intitule){
echo "<li>".$intitule."</li>\n";
$resaff=mysql_query("SELECT * FROM affirmations WHERE idtheme=".$idtheme);
echo '<ul class="affirmation">';
while ($affirmation = mysql_fetch_assoc($resaff)){
// cocher les cases des thèmes déjà sélectionnés
$case_cochee = "";
if (isset($_POST["aff"]) && isset($_POST["aff"][$idtheme]) && in_array($affirmation['id'], $_POST["aff"][$idtheme])){
$case_cochee = " checked=\"checked\" ";
}
echo '<input type="checkbox" name="aff['.$idtheme.'][]" value="'.$affirmation['id'].'" '.$case_cochee.' />'.$affirmation['valeur'].' - '.$affirmation['points'].' point(s)<br />';
}
echo '</ul>';
}
echo '</ul>
<input type="submit" value="Validez vos réponses" />
</form>
</div>';
}
?>
[/php]
[b]1. validerTest.php[/b]
[php]
<?php
// La session utilisateur est activée
session_start();
// La base de données est ouverte
mysql_select_db("QCM", mysql_connect("localhost", "root"));
// L'utilisateur qui passe le test doit être déjà identifié dans un autre contexte
if (! isset($_SESSION["idutilisateur"])){
// Non identifié s'abstenir !!
echo "<p>Veuillez vous identifier avant de commencer le test!</p>";
exit();
}
// Les thèmes du test doivent être sélectionnés par POST du formulaire ou existent déjà dans la SESSION
$liste_themes_coches = isset($_POST["liste_themes_coches"]) ? $_POST["liste_themes_coches"]
: (isset($_SESSION["liste_themes_coches"]) ? $_SESSION["liste_themes_coches"] : null);
// Mettre à jour les thèmes mémorisés dans la SESSION
$_SESSION["liste_themes_coches"] = $liste_themes_coches;
// Enregistrer et Afficher les réponses aux questions par thème sélectionné
if ($liste_themes_coches != null && is_array($liste_themes_coches)){
echo '<div id="divtest">
<h1>Réponses enregistrées</h1><ul class="theme">';
$somme_points = 0;
foreach ($liste_themes_coches as $idtheme=>$intitule){
echo "<li>".$intitule."</li>\n";
if (isset($_POST["aff"]) && is_array($_POST["aff"][$idtheme])){
foreach ($_POST["aff"][$idtheme] as $idaff){
//On insère les resultats du test de la personne testee
$reqteste = sprintf("INSERT INTO reponses (idutil, idaff)
VALUES ('%s', '%s')", $_SESSION['idutilisateur'], $idaff);
mysql_query($reqteste);
$resaff=mysql_query("SELECT * FROM affirmations WHERE id=".$idaff);
echo '<ul class="affirmation">';
while ($affirmation = mysql_fetch_assoc($resaff)){
echo '<li>'.$affirmation['valeur'].' - '.$affirmation['points'].' point(s)</li>';
$somme_points += $affirmation['points'];
}
echo '</ul>';
}
}
}
echo '</ul>
<h3>Vous avez ' . $somme_points . ' point(s)</h3>
</div>';
}
?>
[/php]
Bonne lecture :wink: