Bonjour tout le monde,

Je viens de découvrir un bug dans ma page web.

Mon but est d'afficher l'ID de la table inscrits_en, la note se trouvant dans la table inscrits_en, le matricule de l'étudiant se trouvant dans la table inscrits_en, le nom de l'étudiant se trouvant dans la table etudiants, le prénom se trouvant dans la table etudiants, la note se trouvant dans la table inscrits_en.

Le problème, c'est que c'est l'ID de la table etudiants qui est utilisé dans la page web et non celui de la table inscrits_en (ce qui crée un gros bug, une cote pour un étudiant va dans un autre étudiant).

J'utilise cette chaine SLQ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$sql_Affichage_Etudiants = 
"SELECT *
FROM `inscrits_en`
LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ";
Je pense que le problème vient de là.

Comment puis-je indiquer que c'est l'ID de la table inscrits_en que je dois utiliser et non l'ID de la table étudiants ?

voici l'entiérté de la page :

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
<?php
session_start();
include('../connexion.php');
$_SESSION['id_categories'] = $_POST['id_categories']; 
 
 
//affiche le bouton "clôturer" en le désactivant si le cours est clôturé ou en l'activant si le cours n'est pas clôturé
// IMPORTANT : il faut laisser le code ici pour que le bouton apparaisse au-dessus !!!!
 
$sql_check_cloture = "SELECT Cloture FROM cours WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND Categorie = '".$_POST['id_categories']."' ";
//echo $sql_check_cloture;
$query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
$row_Cloture = mysql_fetch_assoc($query_check_cloture);
 
$sql_Affichage_Etudiants = 
"SELECT *
FROM `inscrits_en`
LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET )
WHERE MNEMONIC = '".$_POST['idmnemonics']."' AND TYPE_DE_COURS = '".$_POST['id_types']."' AND CATEGORIE = '".$_POST['id_categories']."' ";
 
$query_comptage = mysql_query($sql_Affichage_Etudiants);
 
if(!$query_comptage) {echo('Attention, la requete ne fonctionne pas ! '); }
 
//ici viendra le tableau
 
// A REMETTRE
// <td style="display:none"></td> 
// <td style="display:none"></td> 
 
$compteur = 0;
echo '<table width="100%" border="1"> 
		<tr>
			<td align="center">Note originale</td>
			<td align="center">ID</td>
			<td align="center">Matricule</td> 
			<td align="center">Nom</td> 
			<td align="center">Prénom</td> 
			<td align="center" width="5">Cote</td> 
			<td align="center">Report</td> 
		</tr>';	 
while ($tab = mysql_fetch_array($query_comptage)){
//gestion de la couleur des lignes, fait appel ? CSS/couleurs.css
$couleur = ($compteur % 2 == 0) ? "ligne0" : "ligne1";
 
//onblur="comparer(document.getElementById(\'note_originale'.$tab['ID'].'\').value, document.getElementById(\'note_zone_de_texte'.$tab['ID'].'\').value);"
 
//chiffres(event) est la fonction javascript qui vérifie les caract?res entrés par l'utilisateur (voir js/ChiffresOnly.js)
//Comparer est la fonction javascript qui vérifie si la cote encodée par le Professeur est la m?me que celle de la base de données, si
//c'est la m?me, on n'exécute pas le code ajax, autrement, on exécute le code AJAX qui va mettre ? jour la bd.
//onfocus="this.select();" permet de donner le focus a la zone de texte soit si il prend le focus par un clic de souris, soit si il prend le focus apr?s une mauvaise entrée (exemple si le visiteur tape "w")
 
//A REMETTRE
// <td style="display:none"><input type="hidden" name="note_originale" id="note_originale'.$tab['ID'].'"  value="' . $tab['NOTE'] . '" /></td>  
// <td style="display:none"><input type="hidden" name="i_d" id="i_d" value="' . $tab['ID'] . '" /></td>  
echo'	 
 <tr class="'.$couleur.'">  
 			<td width="5%" align="center">' . $tab['NOTE'] . '</td>  
    		<td width="25%" align="center">' . $tab['ID'] . '</td>			
			<td width="5%" align="center">' . $tab['MATRICULE_ET'] . '</td>  
    		<td width="25%" align="center">' . $tab['NOM_ET'] . '</td>  
    		<td width="35%" align="center">' . $tab['PRENOM_ET'] .'</td>'
			;  
 
$sql_check_cloture = "SELECT Cloture FROM cours WHERE MNEMONIC = '".$tab['MNEMONIC']."' AND TYPE_DE_COURS = '".$tab['TYPE_DE_COURS']."' AND Categorie = '".$tab['CATEGORIE']."' ";
//echo $sql_check_cloture;
$query_check_cloture = mysql_query($sql_check_cloture) or die(mysql_error());
$row_Cloture = mysql_fetch_assoc($query_check_cloture);
//echo $row_Cloture['Cloture']; 
echo' <td><input name="note_zone_de_texte'.$tab['ID'].'" type="text"';
if($row_Cloture['Cloture'] == 1)  //si le cours est clôturé, on désactive les zones de texte
{
  echo ' disabled="disabled" ';
}
 
echo 'id="note_zone_de_texte'.$tab['ID'].'" onfocus="this.select();this.style.backgroundColor=\'yellow\'" onchange="verif(this.value,'.$tab['ID'].');" onblur="this.style.backgroundColor=\'white\'"  size="4" style="text-align:center" width="3	%" value="' . $tab['NOTE'] . '"   /> </td>';
echo' <td width="25%" align="center"></td> </tr>';
 $compteur++; 
 
} 
 
echo'</table>'; 
 
 
//si le cours est clôturé, le bouton "clôturer" est désactivé
 
 
 
 
?>
Merci d'avance pour votre aide.

beegees