Bonjour,

je suis en train de réaliser un projet de qcm en php mysql, et je ne parviens pas à transmettre une variable.

Le principe est celui d'un site marchand: les enseignants choisissent des questions qui se rajoutent dans un qcm provisoire (=panier) et le publient quand ils en sont satisfaits (= commande)

Il faut introduire une date limite pour chaque qcm, afin que les élèves ne puissent soumettre les qcm quand ils veulent.

Voici le script intitulé "qcmProvisoire.php":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php 
session_start();
require_once('../Connections/siteProjetCnam.php'); 
include ('incLogoutProf.php');
include ('incAuthentificationProf.php');
include ('incGetSQLValueString.php');


// suppression d'une question en fonction de sa référence
if ((isset($_GET['questionReference'])) && ($_GET['questionReference'] != "") && (isset($_GET['suppQuestion']))) {
  $deleteSQL = sprintf("DELETE FROM questions WHERE reference=%s",
                       GetSQLValueString($_GET['questionReference'], "text"));

  $Result1 = mysql_query($deleteSQL) or die(mysql_error());
}


//init des variables
if(!isset($_GET['ajoutQCM'])) $ajoutQCM="";//init de ajoutQCM si non déclaré
else  $ajoutQCM=$_GET['ajoutQCM']; 
if(!isset($_GET['suppQCM'])) $suppQCM="";//init de suppQCM si non déclaré
else $suppQCM=$_GET['suppQCM'];
if(!isset($_GET['enregistreQCM'])) $enregistreQCM="";//init de enregistreQCM si non déclaré
else $enregistreQCM=$_GET['enregistreQCM'];
if (isset($_SESSION['liste'])) $liste=$_SESSION['liste'];//recup de la liste de la session


//----------------------------------------------------AJOUT QCM PROVISOIRE
if ($ajoutQCM=="AJOUTER")
{
	$reference=$_GET['reference']; // référence d'une question
	$liste[]=array($reference);
	$_SESSION['liste']=$liste; //ajoute une question à la liste
}

//----------------------------------------------------SUPP QCM PROVISOIRE
if (($suppQCM=="SUPPRIMER")&&(isset($_SESSION['liste'])))
{
	$question=$_GET['question'];
	for ($i=0;$i<count($liste);$i++)
		{
		if($question==$liste[$i][0]) array_splice($liste,$i,1);
			
		//suppression de la question
		}
	$_SESSION['liste']=$liste;//mAj de la liste
	if(count($_SESSION['liste'])==0) 
	{
	unset($_SESSION['liste']);
	header("Location:QCMProvisoire.php");
	}
}

//----------------------------------------------------VALIDER QCM
if (($enregistreQCM=="ENREGISTRER")&&(isset($_SESSION['liste'])))
{
	if(!isset($_GET['action'])) 
	$_SESSION['action']="ENREGISTRER";//mémorise l'action 
	header("Location: QCMPubliesGestion.php");
}
 ?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/ModeleAdmin.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Boutique DREAM</title>
<!-- InstanceEndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../style/styleAdmin.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" --> <!-- InstanceEndEditable -->
</head>
<body>
  <div id="conteneur">
    <div id="tete"> <img src="../images/bandeauAdmin.gif" width="950" height="60" border="0"/> </div>
    <div id="menu"> 
    <a href="questionsGestion.php" >Questions</a> 
    <a href="nouveauTheme.php" >Nouveau thème</a>
    <a href="QCMProvisoire.php" >QCM provisoire</a>
    <a href="QCMPubliesGestion.php" >QCM publiés</a>
    <a href="notesQCM.php" >Notes</a>
    <a href="utilisateursGestion.php" >Utilisateurs</a>  
    <a href="../public/banqueQCM.php" >Public</a>
    <a href="<?php echo $logoutAction ?>" >Déconnexion</a>  
    </div>
    <!-- Contenus : -->
    <!-- InstanceBeginEditable name="pagePublic" -->
<h1>GESTION DU QCM PROVISOIRE</h1>
<div id="contenu">
  <?php if(isset($liste))  { ?>
  
    <form name="form1" method="get" action="QCMProvisoire.php">
<table>
	<tr>
		<th width="80%" scope="col">Question</th>
		<th width="20%" scope="col">Supp</th>
	</tr>
        <?php
  for ($i=0;$i<count($liste);$i++)
{
	$query_rsQCM="select * from questions where reference = '".$liste[$i][0]."'";
	$rsQCM = mysql_query($query_rsQCM) or die(mysql_error());
    $row_rsQCM = mysql_fetch_assoc($rsQCM);		
	?>
        <tr>
		<td><?php echo $row_rsQCM['question'] ?></td>
		<td><a
			href="QCMProvisoire.php?suppQCM=SUPPRIMER&question=<?php echo $row_rsQCM['reference'] ?>">
			<img src="../images/clicSup.gif" width="14" height="13" border="0"/></a></td>
	</tr>
        <?php } ?>
</table>
<p>&nbsp;</p>
<p><label>Date limite : <input type="text" name="date_limite" id="date_limite"/></label></p>
<p><input type="submit" name="enregistreQCM" id="enregistreQCM" value="ENREGISTRER"/></p>
</form>
     <?php } else { ?>
    <p>Votre QCM est vide</p>
	  
	 <?php }?>	
  </div>
<!-- InstanceEndEditable -->
    <!-- Fin Contenus : -->
  </div>
</body>
<!-- InstanceEnd --></html>

Et voici le code intitulé QCMPubliesGestion:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<?php 
session_start();
require_once('../Connections/siteProjetCnam.php'); 
include ('incLogoutProf.php');
include ('incAuthentificationProf.php');
include ('incGetSQLValueString.php');


//init des variables 
if (!isset($_GET['QCM_ID'])) $_GET['QCM_ID']=1;
if (!isset($_SESSION['action'])) $action=""; else $action=$_SESSION['action'];
if (isset($_SESSION['liste'])) $liste=$_SESSION['liste'];//recup de la liste de la session
if (!isset($_GET['date_limite']))$date_limite = "0000"; else $date_limite = $_GET['date_limite'];
if (!isset($_SESSION['utilisateurID'])) $utilisateurID=0; else $utilisateurID = $_SESSION['utilisateurID'];

//récupération du nom de l'utilisateur
$query_rsRappelUtilisateur = sprintf("SELECT ID FROM utilisateurs WHERE email = '" . $_SESSION['MM_Username'] . "' ");

$rsRappelUtilisateur = mysql_query($query_rsRappelUtilisateur) or die(mysql_error());
$row_rsRappelUtilisateur = mysql_fetch_assoc($rsRappelUtilisateur);
$totalRows_rsRappelUtilisateur = mysql_num_rows($rsRappelUtilisateur);


//------------Mémorisation du ID utilisateur dans la session
$utilisateurID = mysql_result($rsRappelUtilisateur,0,'ID');
$_SESSION['utilisateurID'] = $utilisateurID ;
//---------------------------------------------------------


//-------------Enregistrement d'une nouvelle commande dans la table commandes
if ($action=="ENREGISTRER")
	 {//début du if
 	 //--------INSERTION DES PARAMÊTRES DU QCM
	 $insertCommande="INSERT INTO qcm_publies (date, UtilisateurID, date_limite) VALUES
     (NOW(),'$utilisateurID', '$date_limite')";
	 $Result1=mysql_query($insertCommande);
	 $QCM_ID=mysql_insert_id(); 
  //récupère l'identifiant utilisateur attribué. 
	
  //RÉCUPÉRATION DES PARAMÈTRES DE LA LISTE 
  //DES ARTICLES
	//récupération des questions,
    //puis enregistrement dans la table listes. 
	for ($i=0;$i<count($liste);$i++)
	{//début du for
	$reference=$liste[$i][0];
      //récup de la réf de la question dans le qcm provisoire
 
	//INSERTION DES PARAMÊTRES DES ARTICLES 
    //DE LA COMMANDE
	$insertListe="INSERT INTO listes (QCM_ID, reference)
    VALUES ('$QCM_ID', '$reference')";
 	$Result1=mysql_query($insertListe);
	}//fin du for
	
  //----------DESTRUCTION DES INFORMATIONS DU PANIER
	//destruction de la liste, du total et du 
    //drapeau « action » de la session 
 	unset($_SESSION['liste']);
	unset($_SESSION['action']);
	}//fin du if ($action=="ENREGISTRER")
//-------------------------------------------------------------


$query_rsSelectQCM = sprintf("SELECT qcm_publies.ID, `date`, utilisateurs.nom FROM qcm_publies, utilisateurs 
							  WHERE utilisateurID = '" . $_SESSION['utilisateurID'] . "'  
							  AND utilisateurs.ID = qcm_publies.utilisateurID 
							  ORDER BY ID DESC");	
	
$rsSelectQCM = mysql_query($query_rsSelectQCM) or die(mysql_error());
$row_rsSelectQCM = mysql_fetch_assoc($rsSelectQCM);
$totalRows_rsSelectQCM = mysql_num_rows($rsSelectQCM);


$query_rsListe = sprintf("SELECT listes.reference, questions.question, questions.rep_juste 
						  FROM listes, questions 
						  WHERE QCM_ID = '" . $_GET['QCM_ID'] . "' 
						  AND questions.reference = listes.reference 
						  ORDER BY reference ASC");

$rsListe = mysql_query($query_rsListe) or die(mysql_error());
$row_rsListe = mysql_fetch_assoc($rsListe);
$totalRows_rsListe = mysql_num_rows($rsListe);


$query_rsQCM = sprintf("SELECT qcm_publies.`date`, qcm_publies.ID, qcm_publies.date_limite, utilisateurs.nom 
						FROM qcm_publies, utilisateurs 
						WHERE qcm_publies.ID = '" . $_GET['QCM_ID'] . "' 
						AND qcm_publies.utilisateurID=utilisateurs.ID");

$rsQCM = mysql_query($query_rsQCM) or die(mysql_error());
$row_rsQCM = mysql_fetch_assoc($rsQCM);
$totalRows_rsQCM = mysql_num_rows($rsQCM);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/ModeleAdmin.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Espace Admin</title>
<!-- InstanceEndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="../style/styleAdmin.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>
<body>
  <div id="conteneur">
    <div id="tete"> <img src="../images/bandeauAdmin.gif" width="950" height="65" border="0" /> </div>
    <div id="menu"> 
    <a href="questionsGestion.php" >Questions</a> 
    <a href="nouveauTheme.php" >Nouveau thème</a>
    <a href="QCMProvisoire.php" >QCM provisoire</a>
    <a href="QCMPubliesGestion.php" >QCM publiés</a>
    <a href="notesQCM.php" >Notes</a>
    <a href="utilisateursGestion.php" >Utilisateurs</a>  
    <a href="../public/banqueQCM.php" >Public</a>
    <a href="<?php echo $logoutAction ?>" >Déconnexion</a> 
    </div>
    <!-- Contenus : -->
    <!-- InstanceBeginEditable name="pageAdmin" -->
<h1>GESTION DES QCM PUBLIES</h1>
    <div id="contenu">
      <form name="form1" method="get" action="QCMPubliesGestion.php">
        <?php if ($totalRows_rsSelectQCM > 0) { // Show if recordset not empty ?>
  <table border="0">
    <tr>
      <th scope="row">Sélectionnez le QCM:</th>
      <td><select name="QCM_ID" id="QCM_ID">
        <?php
do {  
?>
        <option value="<?php echo $row_rsSelectQCM['ID']?>"<?php if (!(strcmp($row_rsSelectQCM['ID'], $_GET['QCM_ID']))) 
        {echo "selected=\"selected\"";} ?>><?php echo $row_rsSelectQCM['ID']?>
        du <?php echo $row_rsSelectQCM['date']?>
        </option>
        <?php
} while ($row_rsSelectQCM = mysql_fetch_assoc($rsSelectQCM));
  $rows = mysql_num_rows($rsSelectQCM);
  if($rows > 0) {
      mysql_data_seek($rsSelectQCM, 0);
	  $row_rsSelectQCM = mysql_fetch_assoc($rsSelectQCM);
  }
?>
      </select></td>
      <td><input type="submit" name="button" id="button" value="AFFICHER"></td>
      </tr>
  </table>
  <?php } // Show if recordset not empty ?>
      </form>
      <p>&nbsp;</p>
      <?php if ($totalRows_rsListe > 0) { // Show if recordset not empty ?>
        <table border="0">
          <tr>
            <th scope="col">Question</th>
            <th scope="col">Réponse</th>
          </tr>
          <?php do { ?>
            <tr>
              <td><?php echo $row_rsListe['question']; ?></td>
              <td><?php echo $row_rsListe['rep_juste']; ?></td>
            </tr>
            <?php } while ($row_rsListe = mysql_fetch_assoc($rsListe)); ?>
        </table>
        <p>&nbsp;</p>
        <table border="0">
          <tr>
            <td colspan="2" scope="row">QCM N° <?php echo $row_rsQCM['ID']; ?> du <?php echo $row_rsQCM['date']; ?></td>
            <td colspan="2" scope="row">date limite: <?php echo $row_rsQCM['date_limite']; ?> </td>
          </tr>
        </table>
        <?php } // Show if recordset not empty ?>
<p>&nbsp;</p>
      <p>&nbsp;</p>
      <?php if ($totalRows_rsSelectQCM == 0) { // Show if recordset empty ?>
        <p>Vous n'avez pas encore de qcm publié.</p>
        <p>Cliquer sur la rubrique Questions pour constituer un QCM.</p>
        <?php } // Show if recordset empty ?></div>
<!-- InstanceEndEditable -->
    <!-- Fin Contenus : -->
  </div>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($rsRappelUtilisateur);

mysql_free_result($rsSelectQCM);

mysql_free_result($rsListe);

mysql_free_result($rsQCM);
?>
J'ai mis en gras les parties bloquantes. La date limite rentrée par un enseignant (je me suis limité à l'année pour le moment, mais je mettrai en place une date complète) n'est pas transmise à la page du qcm publiée.

Si jamais quelqu'un peut m'aiguiller...

Merci par avance,
Johnny