<?php
#=
    function verif_eleves() {
        //hypothèse : les doublons ont déjà été supprimés
        $res=query("SELECT * FROM eleves WHERE tag<>-1");
        while ($row=mysql_fetch_array($res)) {
            $eeid=$row['eleve_id'];
            $ecid=$row['compte_id'];
            $eetab=$row['etab_id'];
            $resc=query("SELECT compte_id,etab_id FROM comptes WHERE eleve_id=$eeid");

            switch (mysql_num_rows($resc)) {

                case 0 :
                    //le champ comptes.eleve_id est peut-être cassé
                    if ($ecid!=NULL && $ecid>0) {
                        $resc2=query("SELECT eleve_id FROM comptes WHERE compte_id=$ecid");
                        if (list($ceid)=mysql_fetch_array($resc2)) { //au plus un puisqu'on cherche sur l'auto-inc
                            //réparer comptes.eleve_id
                            query("UPDATE comptes SET eleve_id=$eeid WHERE compte_id=$ccid");
                            affiche($row,"Réparation de eleve_id dans comptes");
                            break;
                            }
                        mysql_free_result($resc2);
                        }
                    affiche($row,"Pas de compte trouvé");
                    break;

                case 1 :
                    list($ccid,$cetab)=mysql_fetch_array($resc);
                    if ($ecid!=$ccid) {
                        if ($eetab==$cetab) {
                            query("UPDATE eleves SET compte_id=".seci($ccid )." WHERE eleve_id=".seci($eeid));
                            affiche($row,"Réparation de compte_id dans eleves");
                            }
                        else affiche($row,"<font color=\"red\">Réparation possible de compte_id dans eleves possible
                                            MAIS le compte et l'élève ont des etab_id différents.</font>");
                        }
                    //sinon, c'est le cas normal
                    break;

                default :
                    $trouve=false;
                    while (list($ccid)=mysql_fetch_array($resc)) {
                        if ($ecid==$ccid) {
                            //trouvé LE bon (il y en a au plus un puisque $ccid vient d'un auto-inc)
                            //rien à réparer, il faut seulement supprimer les autres
                            $trouve=true;
                            }
                        }
                    if ($trouve) {
                        query("DELETE FROM comptes WHERE eleve_id=$eeid AND compte_id<>$ecid");
                        affiche($row,'Suppression de comptes superflus');
                        }
                } //switch
            }  //while
        mysql_free_result($res);
        } //function


    function verif_profs() {
        //hypothèse : les doublons ont déjà été supprimés
        $res=query("SELECT * FROM profs WHERE tag<>-1");
        while ($row=mysql_fetch_array($res)) {
            $ppid=$row['prof_id'];
            $pcid=$row['compte_id'];
            $petab=$row['etab_id'];
            $resc=query("SELECT compte_id,etab_id FROM comptes WHERE prof_id=$ppid");
            switch (mysql_num_rows($resc)) {
                case 0 :
                    //le champ comptes.prof_id est peut-être cassé
                    if ($pcid!=NULL && $pcid>0) {
                        $resc2=query("SELECT prof_id FROM comptes WHERE compte_id=$pcid");
                        if (list($cpid)=mysql_fetch_array($resc2)) { //au plus un puisqu'on cherche sur l'auto-inc
                            //réparer comptes.prof_id
                            query("UPDATE comptes SET prof_id=".seci($ppid )." WHERE compte_id=".seci($ccid));
                            affiche($row,"Réparation de prof_id dans comptes");
                            break;
                            }
                        mysql_free_result($resc2);
                        }
                    affiche($row,"Pas de compte trouvé");
                    break;

                case 1 :
                    list($ccid,$cetab)=mysql_fetch_array($resc);
                    if ($pcid!=$ccid) {
                        if ($petab==$cetab) {
                            query("UPDATE profs SET compte_id=".seci($ccid )." WHERE prof_id=".seci($ppid));
                            affiche($row,"Réparation de compte_id dans profs");
                            }
                        else affiche($row,"<font color=\"red\">Réparation possible de compte_id dans profs possible
                                            MAIS le compte et le prof ont des etab_id différents.</font>");
                        }
                    //sinon, c'est le cas normal
                    break;

                default :
                    $trouve=false;
                    while (list($ccid)=mysql_fetch_array($resc)) {
                        if ($pcid==$ccid) {
                            //trouvé LE bon (il y en a au plus un puisque $ccid vient d'un auto-inc)
                            //rien à réparer, il faut seulement supprimer les autres
                            $trouve=true;
                            break;
                            }
                        }
                    if ($trouve) {
                        query("DELETE FROM comptes WHERE prof_id=$ppid AND compte_id<>$pcid");
                        affiche($row,'Suppression de comptes superflus');
                        }
                } //switch
            }  //while
        mysql_free_result($res);
        } //function


    function voir_user($elvprof,&$row) {
        vocabulaire($elvprof,&$table,&$champ,&$ElvProf,&$indivacc,&$Indivacc);
        $ccid=$row['compte_id'];
        $cuid=$row[$champ];
        $cetab=$row['etab_id'];
        if ($cuid!=NULL && $cuid>0) {
            $resu=query("SELECT * FROM $table WHERE $champ=$cuid");
            if ($rowu=mysql_fetch_array($resu)) {
                $ucid=$rowu['compte_id'];
                if ($ucid!=$ccid) {
                    query("UPDATE $table SET compte_id=".seci($ccid )." WHERE $champ=".seci($cuid));
                    affiche($rowu,"Réparation de compte_id dans $table");
                    }
                //sinon, cas normal
                }
            else { //pas d'élève trouvé avec eleve_id=$cuid
                   //Si on cherche par l'autre lien compte_id=$ccid
                   //on pourra avoir un ou plusieurs élèves, mais... lequel choisir
                   //puisque les eleve_id ne correspondent pas entre eleves et comptes ???
                   //Donc le plus simple est de supprimer ce compte incorrect
                   //L'élève restera avec ses items et pourra être récupéré.
                query("DELETE FROM comptes WHERE compte_id=$ccid");
                affiche(false,"Suppression du compte",$row);
                }
            }
        else {
            //même raisonnement que ci-dessus
            query("DELETE FROM comptes WHERE compte_id=$ccid");
            affiche(false,"Suppression du compte",$row);
            }
        }

    function verif_comptes() {
        $res=query("SELECT * FROM comptes WHERE statut='Eleve' OR statut='Prof'");
        while($row=mysql_fetch_array($res)) {
            if ($row['statut']=='Eleve')
                voir_user('eleve',$row);
            else  //statut='Prof'
                voir_user('prof',$row);
            } //while
        }






?>