Comment faire le classement dans une matière d'une classe

msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 2 avril 2014 à 13:26
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 4 avril 2014 à 16:42
Bonjour,
je suis entreint de concevoir le bulletin d'une classe . j'arrive pas a faire le classement dans les matière de cette classe . j'ai calculer les moyennes.
je sais pas du tout comment m'y prendre et par ou commencer.
si quelqu'un pouvait m'expliquer

5 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
3 avril 2014 à 02:40
Bonjour,


Msi ... depuis le temps que tu poses des questions sur ce forum... tu n'as toujours pas enregistré le fait que .... sans CODE et/OU sans explication parfaitement claire et détaillée.... qu'on ne pouvait pas t'aider ???!!!!!

j'arrive pas a faire le classement dans les matière de cette classe

Donc.. c'est quoi qui te poses problème ?
- L'affichage des données dans ta page php ? (manipuler les données provenant de ta requête pour les afficher dans ta page ?)

- La requête ?
=> elle plante ?
=> elle te retourne un mauvais résultat ?
NB: Tu l'as testé en direct dans ta BDD ?? (tu obtiens quoi ?)




0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
3 avril 2014 à 14:45
voici comment je veux procéder pour faire le classement des élèves par classe et par matière.
- 1 je me dis qu'il faut que je crée une table moyenne ou je vais insérer les les moyenne calculées.
- 2 a patir de cette table je pourrais faire le classement .

mais deja j'arrive pas a bien m'y prendre
<?php 
include('body/header.php');
include('body/menu.php');
echo'</br>';
//if(isset($_GET['id'])) $id = urldecode($_GET['id']); echo $id;
//if(isset($_GET['mat'])) $mat = urldecode($_GET['mat']);
if(isset($_GET['desgn'])) $desgn = urldecode($_GET['desgn']); //permet de recuperer l'id de la classe;
$sql0 = "SELECT * FROM inscription ";
// on envoie la requête
$req0 = mysql_query($sql0) or die('Erreur SQL !<br>'.$sql0.'<br>'.mysql_error());
$res0 = mysql_num_rows($req0);
$l = mysql_fetch_assoc($req0); // echo $l['id'];
//recuperetion des dates du trimestre
$q_trim = mysql_query("SELECT id,trim,debut,fin,code FROM trimestres ") or die('NO');
$liste = mysql_fetch_assoc($q_trim);
$debut = $liste["debut"]; //echo $debut;
$fin = $liste["fin"];// echo $fin;
//mois debut trim
$debut = explode("/",$debut); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$debut = $debut[1];// echo $debut ;
//mois fin trim
$fin = explode("/",$fin); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$fin = $fin[1]; //echo $fin ;
//recuperation du groupe
$sql_m0 = ('SELECT groupe FROM matieres GROUP BY groupe ');
$q_m0 = mysql_query($sql_m0) or die('Erreur SQL !<br>'.$sql_m0.'<br>'.mysql_error());
$n_m0 = mysql_num_rows($q_m0);
while ($r_m0 = mysql_fetch_assoc($q_m0)) {
//recuperation des matières
$sql_m = ('SELECT * FROM matieres WHERE groupe = "'.$r_m0['groupe'].'" ');
$q_m = mysql_query($sql_m) or die('Erreur SQL !<br>'.$sql_m.'<br>'.mysql_error());
$n_m = mysql_num_rows($q_m);
while ($r_m=mysql_fetch_assoc($q_m)) {
//partie maoyenne

$req = mysql_query("SELECT a.id,a.id_elv,a.note,SUM(a.note) AS NOTE,a.code,a.pseudo,a.obs,a.date_enrg,a.eval,b.id_elv,b.eval,c.matiere,c.id_elv,SUM(d.coeff) AS COEFF,d.id FROM notes a, tb_type_evaluation b , tb_matieres c,tb_coeff d WHERE a.eval = '".$desgn."' AND a.id = b.id AND a.id = c.id AND a.id = d.id AND c.matiere = '".$r_m['matiere']."' AND (MONTH(a.date_enrg) BETWEEN '".$debut."' AND '".$fin."') ") or die('il y a un blem ici');
$rr = mysql_fetch_assoc($req);
//calcul de moyenne
$MOY0 = $rr['NOTE']/$rr['COEFF'];
$MOY = number_format($MOY0, 2, ',', ' ');
//Mise à jour des moyennes dans la base de donnée
//mysql_query("SELECT matieres FROM moyenne WHERE matieres='".$r_m['matiere']."' AND debut='$debut' AND fin ='$fin'");
$reqq = mysql_query("SELECT matieres FROM moyenne WHERE matieres='".$r_m['matiere']."' AND id='".$id."' ");
// on compte le nombre de résultats
$ress = mysql_num_rows($reqq);

if($ress!=0) // l'url existe déjà, on affiche un message d'erreur
{
mysql_query("UPDATE moyenne SET moy = '".$MOY."' WHERE id='".$l['id']."'");
}
else // L'url n'existe pas, on insère les informations du formulaire dans la table
{
//mysql_query("UPDATE membres SET email ="p@pierre.fr" WHERE 'id'=1;");
mysql_query("INSERT INTO moyenne(id,matieres,moy,debut,fin) VALUES('".$l['id']."','".$r_m['matiere']."','".$MOY."','".$debut."','".$fin."')");
}

}
}


?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
3 avril 2014 à 15:01
Bonjour,

Déjà.... sais-tu qu'il est possible de faire des calculs directement dans Mysql ?
Donc.. pas besoin d'aller stocker tes moyennes dans une nouvelle table.. tu peux directement obtenir ces moyennes ( et les afficher..et les trier..) en ne faisant qu'une seule requête.

$sql="SELECT  a.id
		,a.id_elv
		,a.note
		,SUM(a.note) AS NOTE
		,a.code
		,a.pseudo
		,a.obs
		,a.date_enrg
		,a.eval
		,b.id_elv
		,b.eval
		,c.matiere
		,c.id_elv
		,SUM(d.coeff) AS COEFF
		,d.id 
		,SUM(a.note)/SUM(d.coeff) as Moyenne
FROM notes a
	, tb_type_evaluation b 
	, tb_matieres c,tb_coeff d 
WHERE a.eval = '".$desgn."' 
	AND a.id = b.id  
	AND  a.id = c.id 
	AND  a.id = d.id  
	AND c.matiere = '".$r_m['matiere']."' 
	AND (MONTH(a.date_enrg) BETWEEN '".$debut."' AND '".$fin."') 
";
$req = mysql_query($sql) or die('il y a un blem ici : ' . $sql);


PS: tu as noté comment je présente mes requêtes ?? c'est quand même plus facile à lire que de tout mettre dans une seule ligne non ?
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
4 avril 2014 à 15:47
oui merci j'ai vu comment tu présente et c'est plus intéressant
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
4 avril 2014 à 15:45
bonsoir et merci de me répondre .
pour les moyennes j'ai pu calculer .
mon problème c'est le classement par matière.
je sais pas comment faire le classment
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
4 avril 2014 à 16:42
voici ce que je souhaite faire pour faire mon classement des élèves par matière.

1. je sélection in trimestre
//recuperetion des dates du trimestre
$q_trim = mysql_query("SELECT id,trim,debut,fin,code FROM trimestres ") or die('NO');
while($liste = mysql_fetch_assoc($q_trim)){
echo '<div style="background-color:#F00">'.$liste["trim"].'</div></br></br></br>';
$debut = $liste["debut"]; //echo $debut;
$fin = $liste["fin"];// echo $fin;
//mois debut trim
$debut = explode("/",$debut); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$debut = $debut[1];// echo $debut ;
//mois fin trim
$fin = explode("/",$fin); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$fin = $fin[1]; //echo $fin ;
..........

2. je selectionne une matière
//recuperation des matières
$sql_m = ('SELECT * FROM matieres ');
$q_m = mysql_query($sql_m) or die('Erreur SQL !<br>'.$sql_m.'<br>'.mysql_error());
$n_m = mysql_num_rows($q_m);
while($r_m=mysql_fetch_assoc($q_m)){
............................

3. j'affiche les moyenne des elèves dans la matière selectionnée
//recuperation des matières
$sql_m = ('SELECT * FROM matieres ');
$q_m = mysql_query($sql_m) or die('Erreur SQL !<br>'.$sql_m.'<br>'.mysql_error());
$n_m = mysql_num_rows($q_m);
while($r_m=mysql_fetch_assoc($q_m)){
//partie maoyenne
echo $r_m['matiere'];
$sql="SELECT a.id
,a.id_elv
,a.note
,SUM(a.note) AS NOTE
,a.code
,a.pseudo
,a.obs
,a.date_enrg
,a.eval
,b.id_elv
,b.eval
,c.matiere
,c.id_elv
,SUM(d.coeff) AS COEFF
,d.id_elv
,SUM(a.note)/SUM(d.coeff) as Moyenne
FROM notes a
, tb_type_evaluation b
, tb_matieres c,tb_coeff d
WHERE a.eval = '".$desgn."'
AND a.id_elv = b.id_elv
AND a.id_elv = c.id_elv
AND a.id_elv = d.id_elv
AND c.matiere = '".$r_m['matiere']."'
AND (MONTH(a.date_enrg) BETWEEN '".$debut."' AND '".$fin."')
";
$req = mysql_query($sql) or die('il y a un blem ici : ' . $sql);
//calcul de moyenne
$MOY0 = $rr['Moyenne'];
$MOY = number_format($MOY0, 2, ',', ' ');
?>
<table width="384" height="81" border="0">
<tr>
<td>ID_ELV</td>
<td>MOY</td>
<td>CLASSEMENT</td>
</tr>
<?php while($rr = mysql_fetch_assoc($req)){
$MOY0 = $rr['Moyenne'];
$MOY = number_format($MOY0, 2, ',', ' ');
?>
<tr>
<td><?php echo $rr["id_elv"];?></td>
<td><?php echo $MOY;?></td>
<td><?php echo $rr["id"];?></td>
</tr>
<?php
}
?>
</table>
<?php
}
}
?>



et voivi le code complet
<?php 
include('body/header.php');
include('body/menu.php');
echo'</br>';
if(isset($_GET['desgn'])) $desgn = urldecode($_GET['desgn']); //permet de recuperer l'id de la classe;

//recuperetion des dates du trimestre
$q_trim = mysql_query("SELECT id,trim,debut,fin,code FROM trimestres ") or die('NO');
while($liste = mysql_fetch_assoc($q_trim)){
echo '<div style="background-color:#F00">'.$liste["trim"].'</div></br></br></br>';
$debut = $liste["debut"]; //echo $debut;
$fin = $liste["fin"];// echo $fin;
//mois debut trim
$debut = explode("/",$debut); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$debut = $debut[1];// echo $debut ;
//mois fin trim
$fin = explode("/",$fin); //echo $date;
// $date_ann = $date[2]; //echo $date_diff ;
$fin = $fin[1]; //echo $fin ;

//recuperation des matières
$sql_m = ('SELECT * FROM matieres ');
$q_m = mysql_query($sql_m) or die('Erreur SQL !<br>'.$sql_m.'<br>'.mysql_error());
$n_m = mysql_num_rows($q_m);
while($r_m=mysql_fetch_assoc($q_m)){
//partie maoyenne
echo $r_m['matiere'];
$sql="SELECT a.id
,a.id_elv
,a.note
,SUM(a.note) AS NOTE
,a.code
,a.pseudo
,a.obs
,a.date_enrg
,a.eval
,b.id_elv
,b.eval
,c.matiere
,c.id_elv
,SUM(d.coeff) AS COEFF
,d.id_elv
,SUM(a.note)/SUM(d.coeff) as Moyenne
FROM notes a
, tb_type_evaluation b
, tb_matieres c,tb_coeff d
WHERE a.eval = '".$desgn."'
AND a.id_elv = b.id_elv
AND a.id_elv = c.id_elv
AND a.id_elv = d.id_elv
AND c.matiere = '".$r_m['matiere']."'
AND (MONTH(a.date_enrg) BETWEEN '".$debut."' AND '".$fin."')
";
$req = mysql_query($sql) or die('il y a un blem ici : ' . $sql);
//calcul de moyenne
$MOY0 = $rr['Moyenne'];
$MOY = number_format($MOY0, 2, ',', ' ');
?>
<table width="384" height="81" border="0">
<tr>
<td>ID_ELV</td>
<td>MOY</td>
<td>CLASSEMENT</td>
</tr>
<?php while($rr = mysql_fetch_assoc($req)){
$MOY0 = $rr['Moyenne'];
$MOY = number_format($MOY0, 2, ',', ' ');
?>
<tr>
<td><?php echo $rr["id_elv"];?></td>
<td><?php echo $MOY;?></td>
<td><?php echo $rr["id"];?></td>
</tr>
<?php
}
?>
</table>
<?php
}
}
?>


voici ce que s'affiche qui ne me confient pas :


TRIM1



FRANCAIS
ID_ELV MOY CLASSEMENT
0,00
ESPAGNOL
ID_ELV MOY CLASSEMENT
0,00
Philosophie
ID_ELV MOY CLASSEMENT
0,00
Allemand
ID_ELV MOY CLASSEMENT
0,00
MATHEMATIQUES
ID_ELV MOY CLASSEMENT
0,00
SVT
ID_ELV MOY CLASSEMENT
0,00
SP
ID_ELV MOY CLASSEMENT
0,00
ANGLAIS
ID_ELV MOY CLASSEMENT
0,00
TRIM2



FRANCAIS
ID_ELV MOY CLASSEMENT
0,00
ESPAGNOL
ID_ELV MOY CLASSEMENT
0,00
Philosophie
ID_ELV MOY CLASSEMENT
0,00
Allemand
ID_ELV MOY CLASSEMENT
0,00
MATHEMATIQUES
ID_ELV MOY CLASSEMENT
0,00
SVT
ID_ELV MOY CLASSEMENT
0,00
SP
ID_ELV MOY CLASSEMENT
0,00
ANGLAIS
ID_ELV MOY CLASSEMENT
0,00
TRIM3



FRANCAIS
ID_ELV MOY CLASSEMENT
0,00
ESPAGNOL
ID_ELV MOY CLASSEMENT
0,00
Philosophie
ID_ELV MOY CLASSEMENT
0,00
Allemand
ID_ELV MOY CLASSEMENT
0,00
MATHEMATIQUES
ID_ELV MOY CLASSEMENT
0,00
SVT
ID_ELV MOY CLASSEMENT
0,00
SP
ID_ELV MOY CLASSEMENT
0,00
ANGLAIS
ID_ELV MOY CLASSEMENT
0,00
0
Rejoignez-nous