Hi,

I have this code page of PHP, and here i would like to know how moy_gen_eleve is calculated (can you please tell me the formula used to calculate moy_gen_eleve or translate me in vb.net?) I have no idea about PHP

thx

PHP Code:
<?php
/*
 * $Id: calcul_rang.inc.php 1354 2008-01-13 17:24:15Z jjocal $
 *
 


/*
Portion de code qui met à jour le champ rang de la table matieres_notes
et le champ rang de la table  j_eleves_classes
Egalement Calcul  des tableaux suivants
$moy_gen_classe =  tableau des moyennes générales de la classe
$moy_gen_eleve =  tableau des moyennes générales d'élèves

le script à besoin de :
- $id_classe : la classe concernée
- $periode_num : la période concernée
*/

// On appelle la liste des élèves de la classe.

$appel_liste_eleves mysql_query("SELECT e.* FROM eleves e, j_eleves_classes c
    WHERE (
    e.login = c.login and
    c.id_classe = '"
.$id_classe."' and
    c.periode='"
.$periode_num."'
    )
    ORDER BY e.nom, e.prenom"
);
$nombre_eleves mysql_num_rows($appel_liste_eleves);

// On prépare la boucle 'groupes'

if ($affiche_categories) {
        
// On utilise les valeurs spécifiées pour la classe en question
        
$appel_liste_groupes mysql_query("SELECT DISTINCT jgc.id_groupe, jgc.coef, jgc.categorie_id ".
        
"FROM j_groupes_classes jgc, j_groupes_matieres jgm, j_matieres_categories_classes jmcc, matieres m " .
        
"WHERE ( " .
        
"jgc.categorie_id = jmcc.categorie_id AND " .
        
"jgc.id_classe='".$id_classe."' AND " .
        
"jgm.id_groupe=jgc.id_groupe AND " .
        
"m.matiere = jgm.id_matiere" .
        
") " .
        
"ORDER BY jmcc.priority,jgc.priorite,m.nom_complet");
} else {
    
$appel_liste_groupes mysql_query("SELECT DISTINCT jgc.id_groupe, jgc.coef
    FROM j_groupes_classes jgc, j_groupes_matieres jgm
    WHERE (
    jgc.id_classe='"
.$id_classe."' AND
    jgm.id_groupe=jgc.id_groupe
    )
    ORDER BY jgc.priorite,jgm.id_matiere"
);
}

$nombre_groupes mysql_num_rows($appel_liste_groupes);

// Initialisation des tableaux liés aux calculs des moyennes générales
$moy_gen_classe = array();
$moy_gen_eleve = array();
$total_coef = array();
$i=0;
while (
$i $nombre_eleves) {
    
$total_coef[$i] = 0;
    
$moy_gen_eleve[$i] = 0;
    
$moy_gen_classe[$i] = 0;
    
$i++;
}
$calcul_moy_gen 'no';
$j=0;
while (
$j $nombre_groupes) {
    
$group_id mysql_result($appel_liste_groupes$j"id_groupe");
    
$current_group[$j] = get_group($group_id);
    
// Dans tous les cas, on effectue cette requête qui permet de calculer le tableau $nb_notes[] utilisé lors de l'affichage du rang
    
$quer mysql_query("select distinct note, login  from matieres_notes
        where (
        periode = '"
.$periode_num."' and
        id_groupe = '"
.$current_group[$j]["id"]."' and
        statut = ''
        )
        order by note DESC
        "
);
        
$nb_notes[$group_id][$periode_num] = mysql_num_rows($quer);
    
//echo "\$nb_notes[\$group_id][\$periode_num]=\$nb_notes[$group_id][$periode_num]=".$nb_notes[$group_id][$periode_num]."<br />";
        //echo $current_group[$j]["description"] . " : " . $nb_notes[$j][$periode_num] . " - ";

    // Calcul du rang pour chaque matière
    
$recalcul_rang sql_query1("select recalcul_rang from groupes
        where id='"
.$current_group[$j]["id"]."' limit 1 ");

    if (
$recalcul_rang == "-1"$recalcul_rang '';

    if (
substr($recalcul_rang$periode_num-11) != 'n') {
        
$calcul_moy_gen 'yes';
        
// le recalcul du rang est nécessaire
        
$k0;
        
$rang_prec 1;
        
$note_prec='';
        
//mise à jour du champ des rangs
        
while ($k $nb_notes[$group_id][$periode_num]) {
            if (
$k >=1$note_prec mysql_result($quer$k-1'note');
            
$note mysql_result($quer$k'note');
            if (
$note == $note_prec$rang $rang_prec; else $rang = ($k+1);
            
$rang_prec $rang;
            
$login_eleve_temp mysql_result($quer$k'login');
            
$reg_rang mysql_query("update matieres_notes set rang='".$rang."' where (
            periode = '"
.$periode_num."' and
            id_groupe = '"
.$current_group[$j]["id"]."' and
            login = '"
.$login_eleve_temp."' )
            "
);
            
$k++;
        }
        
// On indique que le recalcul du rang n'est plus nécessaire
        
$long strlen($recalcul_rang);
        if (
$long >= $periode_num) {
            
$recalcul_rang substr_replace$recalcul_rang"n"$periode_num-1$periode_num);
        } else {
            
$l $long;
            while (
$l $periode_num-1) {
                
$recalcul_rang $recalcul_rang.'y';
                
$l++;
            }
            
$recalcul_rang $recalcul_rang.'n';
        }
        
$req mysql_query("update groupes set recalcul_rang = '".$recalcul_rang."'
        where id='"
.$current_group[$j]["id"]."'");
    }
    
$j++;
}

// S'il existe des matières coefficientées ou si le champ rang de la table j_eleves_classes n'est pas à jour :
if (($test_coef != '0') and ($calcul_moy_gen == 'yes')) {
    
$j=0;
    while (
$j $nombre_groupes) {
        
// S'il existe des matières coefficientées et si le champ rang de la table j_eleves_classes n'est pas à jour :
        
$current_coef[$j] = $current_group[$j]["classes"]["classes"][$id_classe]["coef"];
        
// Moyenne de la classe dans la groupe $current_group[$j]
        
$current_classe_matiere_moyenne_query mysql_query("SELECT round(avg(note),1) moyenne
            FROM matieres_notes
            WHERE (
            statut = '' AND
            id_groupe='"
.$current_group[$j]["id"]."' AND
            periode='
$periode_num'
            )
            "
);
        
$current_classe_matiere_moyenne[$j] = mysql_result($current_classe_matiere_moyenne_query0"moyenne");

        
// Calcul de la moyenne des élèves et de la moyenne de la classe
        
$i=0;
        while (
$i $nombre_eleves) {
            
$current_eleve_login[$i] = mysql_result($appel_liste_eleves$i"login");
            
// Maintenant on regarde si l'élève suit bien cette matière ou pas

            
if (in_array($current_eleve_login[$i], $current_group[$j]["eleves"][$periode_num]["list"])) {
//                $count[$j][$i] == "0";
                
$current_eleve_note_query mysql_query("SELECT distinct * FROM matieres_notes
                WHERE (
                login='"
.$current_eleve_login[$i]."' AND
                periode='
$periode_num' AND
                id_groupe='"
.$current_group[$j]["id"]."'
                )"
);
                
$current_eleve_note[$j][$i] = @mysql_result($current_eleve_note_query0"note");
                
$current_eleve_statut[$j][$i] = @mysql_result($current_eleve_note_query0"statut");
                
                
// On teste si l'élève a un coef spécifique pour cette matière
                
$test_coef mysql_query("SELECT value FROM eleves_groupes_settings WHERE (" .
                        
"login = '".$current_eleve_login[$i]."' AND " .
                        
"id_groupe = '".$current_group[$j]["id"]."' AND " .
                        
"name = 'coef')");
                if (
mysql_num_rows($test_coef) > 0) {
                    
$coef_eleve mysql_result($test_coef0);
                } else {
                    
$coef_eleve $current_coef[$j];
                }
                
                if (
$coef_eleve != 0) {
                    if ((
$current_eleve_note[$j][$i] != '') and ($current_eleve_statut[$j][$i] == '')) {
                        
$total_coef[$i] += $coef_eleve;
                        
$moy_gen_classe[$i] += $coef_eleve*$current_classe_matiere_moyenne[$j];
                        
$moy_gen_eleve[$i] += $coef_eleve*$current_eleve_note[$j][$i];
                    }
               }
            }
            
$i++;
        }
        
$j++;
    }


    
$i 0;
    while (
$i $nombre_eleves) {
        if (
$total_coef[$i] != 0) {
            
$temp[$i] = round($moy_gen_eleve[$i]/$total_coef[$i],1);
            
$moy_gen_eleve[$i] = number_format($moy_gen_eleve[$i]/$total_coef[$i],1','' ');
            
$moy_gen_classe[$i] = number_format($moy_gen_classe[$i]/$total_coef[$i],1','' ');
        } else {
            
$moy_gen_eleve[$i] = "-";
            
$moy_gen_classe[$i] = "-";
            
$temp[$i] = "-";
        }
        
$rg[$i] = $i;
        
$i++;
    }

    
// tri des tableau
    
array_multisort ($tempSORT_DESCSORT_NUMERIC$rgSORT_ASCSORT_NUMERIC);
    
$i=0;
    
$rang_prec 1;
    
$note_prec='';
    while (
$i $nombre_eleves) {
        
$ind $rg[$i];
        if (
$temp[$i] == "-") {
            
$rang_gen '0';
        } else {
            if (
$temp[$i] == $note_prec$rang_gen $rang_prec; else $rang_gen $i+1;
            
$note_prec $temp[$i];
            
$rang_prec $rang_gen;
        }
        
$reg_rang mysql_query("update j_eleves_classes set rang='".$rang_gen."' where (
        periode = '"
.$periode_num."' and
        id_classe = '"
.$id_classe."' and
        login = '"
.$current_eleve_login[$ind]."')");
         
$i++;
    }
}
if ((
$test_coef == '0') and ($calcul_moy_gen == 'yes')) {
    
$i=0;
    while (
$i $nombre_eleves) {
        
$reg_rang mysql_query("update j_eleves_classes set rang='0' where
        (
        periode = '"
.$periode_num."' and
        id_classe = '"
.$id_classe."' )");
         
$i++;
    }
}

?>