calculer la moyenne

Répondre
macha
le 08/04/2011 à 20:07
macha
Bonjour

voici mon formulaire

<form action=" ajout1.php" method="post">
<fieldset>
<p>
<label for="service">id_e:
<select name="id_e">
<option>111</option>
<option>222</option>
<option>333</option>
<option>444</option>
</select><br /><br />
</label>
</p>

<p>
<label for="label" for="nom">id_etud:
<select name="id_etud">
<option>1207045</option>
<option>1307555</option>
<option>1410256</option>
</select><br /><br />
</label>
<label for="nom">code_mat:
<select name="code_mat">
<option>eq10</option>
<option>eq11</option>
<option>eq12</option>
</select>
</label>

<label for="nom">code_annee:
<select name="code_annee">
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
</select><br /><br />
</label>

<label for="nom">note:
<input id="nom" name="note" size="6" type="texte" /><br /><br /><br />
</label>
<input id="saisir" type="submit" value="saisir" /> <br />

</fieldset>
</form>
En fait je cherche à calculer la moyenne d'un étudiant étape par étape
je dois effectuer le code pour la moyenne matière ensuite la moyenne d'une unité et ensuite la moyenne semestrielle.

Pour calculer la moyenne matière:
la moyenne est égal à (tp+td)exam*2/3
sinon si examen<10
la moyenne est égal à (tp+td)ratrapage*2/3
pour calculer la moyenne unité:
M_UE = ∑ Moyenne des matières*coefficient_mat / ∑coefficient
Moyenne de semestre (M_sem) :

M_sem= ∑ M_UE *coefficient_ue / ∑coefficient._ue.

A partir de la requete INSERT INTo, j'ai insérer les informations dans la table "avoir" et puis j'ai fait des jointures sur les tables pour pouvoir visualiser les notes des étudiants pour chaque examen concerné avec son code.

Ensuite je cherche d'abord à calculer la moyenne matière pour chaque étudiant.
Puisque mon résultat d'affichage le tableau contient les informations suivantes
id étudiant,nom étudiant,prénométudiant,id_examen,libellé examen,codematière,libellé matière,code anné ,note
je cherche à en extraire les notes pour chaque examen concernépour un étudiant concerné et ensuite faire des opérations la dessus.



******************
<?php
$id_e=$_POST['id_e'];
$id_etud =$_POST['id_etud'];
$code_mat=$_POST['code_mat'];

$code_annee=$_POST['code_annee'];

$note=$_POST['note'];
$bd=mysql_connect('localhost','root','admin') or die ('connexion impossible'.mysql_error());
mysql_select_db('data',$bd) or die ('connexion impossible'.mysql_error()) ;


$sql2=" SELECT etu.id_etud,nom_fr,prenom_fr,examen.id_e,libelle_e,matiere.code_mat,intitule_mat,
avoir.code_annee,note,groupe.num_group,num_sec
FROM etu,examen,matiere,avoir,groupe
WHERE etu.id_etud=avoir.id_etud
AND examen.id_e=avoir.id_e
AND matiere.code_mat=avoir.code_mat

AND groupe.num_group=etu.num_group
";
$r= "$sql2 ORDER BY id_etud";
$resultat =mysql_query($r);
echo'<table border=1>';
echo '<tr bgcolor="#D1D7DC"><td>';
echo id_etud; echo '<td><td>';echo nom_francais ; echo '<td><td>'; echo prenom_francais ; echo '<td><td>';
echo id_examen; echo '<td><td>';echo libelle_examen; echo '<td><td>';echo code_matiere; echo '<td><td>';echo intitule_matiere; echo '<td><td>';echo note; echo '<td><td>';echo code_annee; echo '<td><td>';echo num_group;echo '<td><td>';echo num_sec; echo '<td><td>';echo moyenne;
while ($test= mysql_fetch_row($resultat)){
list ($id_etud,$nom_fr,$prenom_fr,$id_e,$libelle_e,$code_mat,$intitule_mat,$code_annee,$note,$num_group,$num_sec)=$test;


echo '<tr bgcolor="#DDEEFF"><td>';
echo $id_etud; echo '<td><td>';echo $nom_fr ; echo '<td><td>'; echo $prenom_fr ; echo '<td><td>';
echo $id_e; echo '<td><td>';echo $libelle_e; echo '<td><td>';echo $code_mat; echo '<td><td>';echo $intitule_mat; echo '<td ><td bgcolor="EEBABF">';echo $note; echo '<td><td>';echo $code_annee; echo '<td><td>';echo $num_group;echo '<td><td>';echo $num_sec;
echo '</td></tr>';

$a=$test[ 8] ;
echo $a;
mysql_query($r);

}
mysql_close();

?>

</table>

******
je commencé à écrire une fonction:
j'extrait dans un tableau différent les notes examen,tp,td et puis je calcule avec condition ensuite je fais la jointure.
<?php
$r1=mysql_query("SELECT note AS N ex
FROM avoir
ORDER BY id_etud") or die (mysql_error());
$N ex=array();
while($ligne=mysql_fetch_assoc($result)){$N ex[]=$ligne['N ex'];}
mysql_free_result($r1);

$r2=mysql_query("SELECT note AS N tp
FROM avoir
ORDER BY id_etud") or die (mysql_error());
$N tp=array();
while($ligne=mysql_fetch_assoc($result)){$N tp[]=$ligne['N tp'];}
mysql_free_result($r2);

r3=mysql_query("SELECT note AS N td
FROM avoir
ORDER BY id_etud") or die (mysql_error());
$N td=array();
while($ligne=mysql_fetch_assoc($result)){$N td[]=$ligne['N td'];}
mysql_free_result($r3);


r4=mysql_query("SELECT note AS N tp
FROM avoir
ORDER BY id_etud") or die (mysql_error());
$N tp=array();
while($ligne=mysql_fetch_assoc($result)){$N tp[]=$ligne['N tp'];}
mysql_free_result($r4);


$moy=NULL;
if r1>10
$t=" ,SUM(r1*2,r2,r3) ,
$moy:=$t/3;
else{ $t=" ,SUM(r4*2,r2,r3)='$item',
$moy:=$t/3;

$sql="SELECT id_e,id_e,note, $moy,

FROM avoir
INNER JOIN etudiants ON etudiants.id-etud = avoir.id-etud
WHERE id_etud = '1207045'
";
?>

si quelqu'un pouvais m'aider à résoudre ce cas car j'ai du mal à écrire ce code.
LupusMic
le 10/05/2011 à 08:45
LupusMic
Désolé d'arriver aussi tard. Mais en fait, il y a plus simple pour agréger des stats avec MySQL.

Tu as les clauses avg, sum et group by pour t'aider.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours