Partage
  • Partager sur Facebook
  • Partager sur Twitter

gestion de notes des élèves d'une classe [PHP4 ]

3 avril 2016 à 15:15:43

Bonjour,
c'est rare que je vienne demander de l'aide, je pense que je ne l'ai pas encore fait sur ce forum. Avant je cherchais partout mais j'arrivais à chaque à trouver une solution. Mais là cela devient une casse tête.

Nous sommes entrain de concevoir une plateforme de gestion d'école. Mais nous avons un problème concernant la gestion des notes des élèves.

J'explique la situation:
-Nous codons plutot en PHP4 même si parfois on utilise de l'orientée objet. Nous utilisons MySql pour la base de donnée et Pdo pour la connexion.
-Voici les infos sur la base de donnée:

Nous avons 5 tables pour la gestion des notes:

=>la table "evaluation" où on enregistre les avaluations avec comme champs (id_eval,..., id_prof, id_matiere ,id_classe)

=>la table "note" où il y'a les champs (id_note, devoir1, devoir2, compo, semestre, id_eleve, id_eval)

=>la table "classe" où il y'a les champs (id_classe, nom_classe, id_ecole)

=>la table "eleve" où il y'a les champs (id_eleve,...,id_user,...)

=>la table "professeur" où il y'a les champs (id_ens, nom_ens,...,id_user,...)

Mais dans notre cas ci seules les tables évaluations et note seront afféctés.

Bref ce que nous voulons c'est que lorsqu'un professeur veut enregistrer des notes pour les élèves, qu'il crée d'abord une évaluation. On enregistre en premier lieu l'évaluation dans la table évaluation. Pour ça pas de probléme.


Mais là où ça bloque  :euh: c'est après avoir creer l'évaluation, le prof doit pouvoir enregistrer les notes des élèves. Et pour cela dès qu'il crée une évaluation, on lui liste les évaluations et lorsqu'il clique sur une évaluation, on récupère l'id de l'évaluation et on doit lui lister un formulaire où il y'a la liste de tous les élèves de la classe concerné par cette évaluation. Et lorsqu'il remplira les champs et qu'il clique sur envoyer, que l'on puisse envoyer les notes saisi se trouvant dans le formulaire dans la table "note".

-Si dans la classe il y'a 10 éléves, on doit pouvoir lui lister 10 lignes avec (nom_eleve, prenom_eleve, devoir1, devoir2, compo) et envoyer les informations rempli
-Si dans la classe il y'a 15 éléves, on doit pouvoir lui lister 15 lignes...
-Si dans la classe il y'a 30 éléves, on doit pouvoir lui lister 30 lignes..
...

J'éspère que je n'ai pas été très longs dans les explications mais j'éspère aussi que cela aidera pleins de monde, car j'ai cherché partout sans trouver de solution!

Merci d'avance.
  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2016 à 19:26:17

Bonsoir,

il faut utiliser un tableau, exemple :

<?php
// ta requête
echo '<form action="" method="post">';
while(/*fetch*/){
  echo '<label>Nom : <input type="text" name="nom_eleve['.$data['colonne_id_eleve'].']" value="'.$data['colonne_nom_eleve'].'" /></label>';
  // tes autres inputs 
}
?>

puis lors du traitement du formulaire, tu traite les tableaux $_POST['nom_eleve'] et ainsi de suite...

  • Partager sur Facebook
  • Partager sur Twitter
Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
7 avril 2016 à 15:43:51

Merci b-dav pour ton intervention, mais mon principal problème réside dans le traitement de ce tableau pour l'envoi des données dans la base donnée ;)
  • Partager sur Facebook
  • Partager sur Twitter
7 avril 2016 à 17:17:41

Tu ne sais pas à quel point c'est un enfer les logiciels de gestions de note pour les élèves...
  • Partager sur Facebook
  • Partager sur Twitter

Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V

7 avril 2016 à 17:27:26

Hello,

Je suis désolé, mais je ne vois pas de question.
Juste une info donnant une piste là où tu bloques, il se peut que je sois à coté. 

Pour chaque évaluation, cette dernière est associé à une classe comprenant un nombre d'élèves.
Tu dois donc faire X lignes de notes, où X est le nombre d'élèves.

Tu remplis chaques lignes (nomEleve | note)

Au submit, pour chaque élève dans ta grille, tu envoies à ta BDD l'ID de l'évaluation, l'ID de la classe, l'ID du prof, l'ID de l'élève et la note. (ça doit être possible de faire avec moins d'information je pense)

EDIT: Ou peut-être souhaites-tu un exemple ?

 Ta forme coté HTML.

<form name="form_submit" method="post" action="">           
   <table>
      <tr>
         <td><input type="text" name="title[]" /></td>
         <td><input type="text" name="text[]" /></td>
       </tr>
       <tr>
          <td><input type="text" name="title[]" /></td>
          <td><input type="text" name="text[]" /></td>
       </tr>
       <tr>
          <td><input type="text" name="title[]" /></td>
          <td><input type="text" name="text[]" /></td>
       </tr>
       <tr>
          <td><input type="text" name="title[]" /></td>
          <td><input type="text" name="text[]" /></td>
       </tr>
       <tr>
          <td colspan="2"><input type="submit" value="Submit" name="submit" /></td>
       </tr>
   </table>
</form>

Et du coup, la sortie devrait être du genre

Array
(
    [title] => Array
        (
            [0] => test
            [1] => test1
            [2] => test2
            [3] => test3
        )

    [text] => Array
        (
            [0] => test
            [1] => test1
            [2] => test2
            [3] => test3
        )

    [submit] => Submit
)



 

-
Edité par Babart 7 avril 2016 à 17:30:21

  • Partager sur Facebook
  • Partager sur Twitter
7 avril 2016 à 18:41:07

2boubacar10 a écrit:

-Nous codons plutot en PHP4 même si parfois on utilise de l'orientée objet. Nous utilisons MySql pour la base de donnée et Pdo pour la connexion.

La POO PHP4, c'était tellement n'importe quoi que j'en ai la larme à l'oeil à chaque fois que j'y repense... Pourtant j'ai commencé mon aventure orientée objet par là, perso. :D Bien sûr j'ai dû désapprendre vite les 3/4 quand je suis passé à la POO PHP5 plus sérieuse puis à l'orienté objet de langages purement objet comme le C# ou le Java...

Ceci étant tu nous parles de PDO. Que je sache PDO n'existe pas en PHP4. Donc, tu exécutes un code PHP4 sous un environnement PHP5 ?

Je ne peux malheureusement pas creuser le sujet tant que cette inconnue persiste, c'est un trop gros morceau.

  • Partager sur Facebook
  • Partager sur Twitter
7 avril 2016 à 19:26:44

*edit multiple, au calme*

Bonsoir,

Bon allez, pas envie de me lancer mais vu qu'on ma tracté jusqu'ici (DK je te hais)... ^^

Je ne sais malheureusement pas quoi dire concernant le contexte technique et applicatif tellement les questions fusent. Les mots me manquent, trop en même temps, ça larsen...

Déjà, comme dit plus haut:
PHP4, aie... déprécié un max et la POO est plus une ébauche qu'une vraie prog objet. Ensuite, MySQL + PDO, heu... sachant que d'une part le driver MySQL boosté (MySQLND) n'est dispo que pour PHP 5+ (sauf erreur de ma part), et que PDO est une vraie lib php... ça fleure bon comme la recette d'un désastre annoncé.

Nous codons plutot en PHP4 même si parfois on utilise de l'orientée objet

Mélanger fonctionnel et POO ? WTF ? C'est de la folie douce, difficile de faire mieux pour un code absolument impossible à maintenir car sybillin et pas homogène o.O
Et que veux dire le "plutôt" au juste ?

Bon ça c'est fait pour la partie technique...

-Voici les infos sur la base de donnée:
[...]
=>la table "evaluation" où on enregistre les avaluations avec comme champs (id_eval,..., id_prof, id_matiere ,id_classe)

=>la table "note" où il y'a les champs (id_note, devoir1, devoir2, compo, semestre, id_eleve, id_eval)

=>la table "classe" où il y'a les champs (id_classe, nom_classe, id_ecole)

=>la table "eleve" où il y'a les champs (id_eleve,...,id_user,...)

=>la table "professeur" où il y'a les champs (id_ens, nom_ens,...,id_user,...)

*gros soupir*
Que dire... Et surtout par où commencer...

  • Evaluation liée à la classe --> ah tu comptes mettre une note globale pour la classe entière ? ^^
  • Note vs Evaluation (dans quel sens ? j'ai du mal à comprendre la différence là) non-unique l'une face à l'autre et avec des clés étrangères différentes... Etrange...
  • Eleve pas lié à la classe... une cellule anarchiste ? ^^
  • Classe liée à Ecole mais... pas de table Ecole ?
    (cf plus bas une proposition)

Mais dans notre cas ci seules les tables évaluations et note seront afféctés.

Ca... j'en suis pas si sûr. Rien que la table eleve, déjà.

Mais là où ça bloque c'est après avoir creer l'évaluation, le prof doit pouvoir enregistrer les notes des élèves. Et pour cela dès qu'il crée une évaluation, on lui liste les évaluations et lorsqu'il clique sur une évaluation [...]

Tu me rappelles Chevalier & Laspallès (sans rancune hein :p )... il a voulu aller de Nantes à Rennes, mais il y avait un arrêt à Strasbourg... A STRASBOURG ? y'en a qui ont essayé de sauter du train en marche mais... ils ont eu des problèmes :p

Tu as les classes avec les élèves, donc l'effectif et la composition des classes, pourquoi chercher plus loin ? Le format du tableau de saisie importe peu - disons plutôt: moins que la structure de la base pour le moment - mais perso je ne suis ni fan des tables html ni des variables tableau. Avis strictement personnel...

Petite proposition vite fait:

Tables:

  • Ecole (id_ecole, nom_ecole, ...)
  • Classe (id_classe, fk_ecole -> ecole.id_ecole, nom_classe, code_niveau) (code niveau == 1 pour CP, 2 pour CE1, 2 pour CE2... etc)
  • Eleve (id_eleve, fk_classe -> classe.id_classe, nom, prenom)
  • Bulletin (remplace ta table Evaluation) (id_bulletin, periode_debut, periode_fin, fk_eleve -> eleve.id_eleve, note) ("note" ici est la note generale, cf table suivante)
  • Bulletin_commentaires (parce que souvent chaque prof a son mot a dire) (id_comm, fk_bulletin -> bulletin.id_bulletin, prof_id -> professeur.id_professeur, note_prof, commentaire, code_matiere)
  • Evaluation (contrôle ponctuel, td, tp... etc) (id_evaluation, date, code_matiere, prof_id -> professeur.id_professeur, classe_id -> classe.id_classe)
  • Evaluation_notation (le résultat d'un contrôle) (id_note, fk_eval -> evaluation.id_evaluation, eleve -> fk_eleve, note, mention_absent)
  • Professeur (id_professeur, nom, prenom, fk_ecole -> ecole.id_ecole)
  • Prof_emploi (un professeur peut travailler sur plusieurs écoles) (fk_prof -> professeur.id_professeur, fk_ecole -> ecole.id_ecole)

Je passe sur des sous-systèmes type les conseils de classe (visible uniquement des profs) qui serait uniquement pour mettre des appréciations non-numéraires aux élèves.

Captain Obvious aux commandes, avant une baffe certaine:

  • Une école peut avoir plusieurs classes (y'a même le mitard pour les plus récalcitrants hihi)
  • Un élève n'est membre que d'une seule classe (si, j'te jure !!)
  • Un élève peut avoir plusieurs bulletins -- typiquement, un par trimestre (c'est connu que les "bons" profs ne collent que des zéros)
  • Un bulletin peut avoir plusieurs commentaires/notes, généralement une par matière (echo feignasse ctrl+a ctrl+c while (1) (tab ctrl+v))
  • Un contrôle donne lieu (sauf absents !) à autant de copies (donc notes) que d'élèves dans la classe concernée. (le prof en déchire une ou deux, dans des accès de rage... faut prendre ça en compte !!)
  • Comme dit plus haut, un professeur peut travailler sur plusieurs sites.

My two cents... j'ai peut être écrit de la m*** d'ailleurs ^^
Je n'ai pas pris en compte des éventuels problèmes d'optimisation des requêtes, c'est juste pour se faire une idée.

Version graphique:

-
Edité par Ze Thriller 7 avril 2016 à 21:56:13

  • Partager sur Facebook
  • Partager sur Twitter
Si vous voyez ce message non édité, c'est un miracle !
7 avril 2016 à 20:40:17

Ze Thriller a écrit:

Nous codons plutot en PHP4 même si parfois on utilise de l'orientée objet

Mélanger fonctionnel et POO ? WTF ? C'est de la folie douce, difficile de faire mieux pour un code absolument impossible à maintenir car sybillin et pas homogène o.O

En fait, PHP4 dispose d'une POO (contrairement à PHP3 et antérieurs qui étaient effectivement procéduraux. Oui, on parle de procédural, pas de "fonctionnel" parce que ça ça veut juste dire que ça fonctionne... :p ) C'est juste que la POO de PHP4 était tellement rudimentaire que c'en était carrément ridicule.

  • Pas d'interface, ne parlons même pas des traits
  • Pas de classes et méthodes abstraites, c'est déjà pas mal qu'il y ait de l'héritage
  • Pas de notion de visibilité. Tout est publique, et les attributs utilisent le mot-clé var.

Voici une classe Membre en PHP 5

class Membre {
   private $_id = null;
   private $_pseudo;

   public function __get($var) {
      $method = 'get' . implode('', array_map('ucfirst', explode('_', $var)));
      if(is_callable([$this, $method])) return $this->$method();
      else throw new \LogicException(static::class . "::\$$var n'existe pas ou est illisible");
   }

   public function __set($var, $val) {
      $method = 'set' . implode('', array_map('ucfirst', explode('_', $var)));
      if(is_callable([$this, $method])) $this->$method($val);
      else throw new \LogicException(static::class . "::\$$var n'existe pas ou est protégé en écriture");

   private function getId() { return $this->_id; }
   private function getPseudo() { return $this->_pseudo; }

   private function setId($id) {
      if($id == (int)$id and (is_null($this->_id) or $id > 0)) $this->_id = $id;
      else throw new \UnexpectedValueExcepton(static::class . "::\$id ne peut valoir $id");
   }

   private function setPseudo($pseudo) {
      if(is_string($pseudo)) $this->_pseudo = $pseudo;
      else throw new \UnexpectedValueException(static::class . "::\$pseudo doit être une chaîne");
   }

   public function __construct($pseudo = '', $id = 0) {
      $this->id = $id;
      $this->pseudo = $pseudo;
   }
}

Voilà, avec un peu de getters et setters, mais des "propriétés" utilisables comme s'il s'agissait d'attributs publiques, mais qui en arrière-plan appellent les getters et setters pour manipuler les vrais attributs qui eux, sont privés. Tout ça pour assurer la cohésion des données dans les attributs.

Maintenant, la même en PHP 4

class Membre {
   var $id;
   var $pseudo;
   function Membre($pseudo = '', $id = 0) {
      $this->id = $id;
      $this->pseudo = $pseudo;
   }
}

Voilà, voilà... Si on peut mettre un membre avec comme id "Trololo--Sangoku-est-roi", on peut...
Notez au passage que le constructeur ne se note pas pareil non plus...




-
Edité par Darth Killer 7 avril 2016 à 20:41:30

  • Partager sur Facebook
  • Partager sur Twitter
7 avril 2016 à 23:24:16

Après une longue conversation sur le sujet par Skype pour en parler, donc le modèle proposé par ZT présente une faille : le lien entre la notion de classe et celle d'élève est direct. Du coup, si on change la classe de l'élève, on casse ses bulletins tout en perturbant la liste d'élèves des 2 classes. On perturbe tout l'historique, et c'est pas cool... :-°

Voici le modèle que je propose. Attention les yeux. ;)

  • Ecole(id (primaire), nom, ...) : la seule table facultative je pense, vu l'énoncé, mais je l'ai reprise de ZT.
  • AnnéeScolaire(id(primaire)) : la notion d'année scolaire. On calcule l'année de début et celle de fin d'après les trimestres qui la constituent. On peut aussi stocker directement la première année et en déduire la 2e, je ne l'ai juste pas fait ici. ;)
    La notion d'année scolaire est importante pour l'historique des classes
  • Trimestre(id(primaire), numéro, début, fin, année_scolaire(AnnéeScolaire.id)) : la notion de trimestre sera imortante pour les bulletins et par extension pour les évaluations.
  • Niveau (id(primaire), nom) : une liste +/- fixe des différents niveaux scolaire possible : CP, CE2, etc... ; on pourra en ajouter quand le rectorat voudra renommer des niveaux scolaire (ajouter plutôt que modifier, afin de ne pas impacter les années précédentes)
  • Classe(id(primaire), nom, école(Ecole.id), niveau(Niveau.id), année_scolaire(AnnéeScolaire.id)) : représente une classe précise. Le champs nom est un truc en plus pour différencier les classes entre elles quand on a plusieurs classes de même niveau la même année dans la même école.
  • Discipline(id(primaire), nom) : liste des disciplines enseignées
  • Personne(id(primaire), nom, prénom, type) : la notion de personne regroupe 2 notions similaires : enseignant et élève. si on veut faire la différence, un champs type peut être introduit. Si des informations supplémentaires spécifiques aux enseignants ou aux élèves doivent être introduits, je suggère l'ajoute de tables spécifiques, mais ici rien de tel.
  • Enseignement(id(primaire), classe(Classe.id), discipline(Discipline.id), enseignant(Personne.id[type=1])) : Un enseignant dispense l'enseignement d'une discipline pour une classe
  • Inscription(id(primaire), classe(Classe.id), élève(Personne.id[type=2])) : un élève est inscrit à une classe pour l'année de cette classe, laquelle est caractérisée par son niveau.
  • Bulletin(id(primaire), trimestre(Trimestre.id), inscription(Inscription.id), appréciation) : bulletin global, on calcule la moyenne globale du trimestre mais cette table fournit en plus l'appréciation globale.
  • DetailBulletin(id(primaire), bulletin(Bulletin.id), enseignement(Enseignement.id), appréciation) : ligne dans le bulletin détaillant un enseignement précis : moyenne trimestrielle pour cet enseignement (calculée) et appréciation
  • Evaluation(id(primaire), detail_bulletin(DetailBulletin.id), note, appréciation) : Une note précise, avec sa valeur et son appréciation. Elle est rattachée à un détail de bulletin, donc à un bulletin, donc à un trimestre.
  • Partager sur Facebook
  • Partager sur Twitter
8 avril 2016 à 13:48:28

Ze Thriller a écrit:

Bon allez, pas envie de me lancer mais vu qu'on ma tracté jusqu'ici (DK je te hais)... ^^

N'en veux pas a DK c'est moi qui lui ai refilé le bébé parce que comme il dit "je sais dénicher les perles" xD. J'avais l'impression que l'op foncé dans le mur avec sa modélisation sans vraiment arriver a expliquer pourquoi je ressentais ca :o

2BOUBACAR10 : tu viens d'avoir la confirmation en long en large et en travers de ce que je pensais :) repartir de la base a partir des conseils qui t'ont été donnés est surement la meilleure solution pour toi. Comme je disait tu fonces dans un mur (ou il y aura forcement un moment ou tu te plantera dans un virage) si tu restes avec ta modélisation de données actuelle.

-
Edité par kets14 8 avril 2016 à 13:57:53

  • Partager sur Facebook
  • Partager sur Twitter
"Il est hélas devenu évident aujourd’hui que notre technologie a dépassé notre humanité"  A.E.
13 avril 2016 à 15:41:15

Bon je viens donner des eclaicissement. Merci à tous ceux qui ont répondu à cette discussion, je suis en entreprise c'est pourquoi je suis très pris visiter le forum tous les jours. Et j'éspère que cette discussion profitera a plus d'un.

Je vois d'abord qu'il y'a beaucoup d'erreurs dans mon premier message et que la modélisation que nous avons fait a été mal compris.

1- Nous ne codons pas en php4 mais en php5 vu que PDO n'existe meme pas en php4, donc c'est une erreur de ma part.

2- Je devrais dire que nous codons en procédural (il faut traduire "coder en PHP4" par "coder en procédural" :soleil:)

3- Voici la modélisation que nous avons fait

On gère plusieurs ecoles dans la meme base de donnée (BDD), plusieurs classes, plusieurs professeur, plusieurs élèves et leur notes, plusieurs année scolaire,...

Pour ça on a 48 tables parmi lesquelles les suivantes:

- user: id_user, login, password, profil, photo. (On a séparé les profil, chacun avec sa table. On pouvait aussi ne pas le faire)

- ecole:id_eco, nom_eco,...

- eleve:id_ele,prenom_ele,...,id_user(user)

- classe: id_classe, nom_classe, id_ecole.

- enseignement: id_ens, id_user(user), fk_id_mat(matiere), id_classe(classe), annee_scolaire.
(c'est là ou on enregistre un prof pour l'année scolaire en cours. Car un prof peut enseigner dans une école cette année-ci et ne pas enseigner l'année suivante.)


- inscription: id_ins, date_ins, fk_id_ele(eleve),fk_id_eco(ecole), id_classe(classe)..,id_user(user)
(c'est là que l'on enregistre un élève à l'inscription pour une année donnée, car l'année suivante il pourrais très bien etre transféré dans une autre école gérer dans le meme logiciel, ET à partir de id_user on pouvait recupérer le fk_id_ele mais bon cela rallonge la requete)

- matiere: id_matiere, libelle_matiere,...,en_cours

- evaluation: id_eval, date_eval, id_ecole(ecole), id_matiere(matiere), id_classe(classe)
id_ecole(inutile je pense comme on peut récuperer à partir de la classe)

- note: id_note, devoir1, devoir2, compo, _id_eleve(eleve), id_eval(evaluation)

- professeur: id_prof, nom_prof,...,id_user(user)

- professorat: id_professorat, id_user(user), id_ecole(ecole), date_debut, date_fin, en_cours(oui/non)
(c'est là que l'on vérifie si un professeur est actif ou non, dans quelle ecole et pour combien de temps)

- .....

Donc on peut dire que:
- un élève peut etre inscris dans une classe pour année scolaire donnée

- un élève peut avoir une ou plusieurs notes (table => note)

- un ensemble (une ligne) de note d'un éléve dans la table note ne peut appartenir qu'à une seule évaluation

- un élève peut etre inscris dans une classe pour une année donnée

- une classe appartient à une école

1- un élève n'est pas directement rattaché à une classe parce que le même élève l'année suivante sera normalement dans une autre classe. C'est pourquoi on a la table "inscription" qui permet d'enregistrer une élève dans une classe pour une année donée (ex: l'année en cours)

2- On rattache id_eval à la table note, car chaque note concerne une évaluation bien précise. Une évaluation concerne une classe et une matière

Exemple:
On peut vouloir créer une evaluation en Maths
-On crée l'évaluation pour une classe et une date bien précise (on peut avoir deux évaluations de maths pour deux classes différentes)
-On enregistre les notes dans la table note qui a comme clef etrangère id_evaluation

  Par exemple si on veut afficher les notes dans la base donée peut faire:

SELECT id_ele, prenom_ele, nom_ele, devoir1, devoir2, compo, id_note, id_prof, evaluation.id_prof, nom_classe, date_ins AS 'date inscription'
FROM inscription
INNER JOIN note ON inscription.fk_id_ele = note.id_eleve
INNER JOIN eleve ON eleve.id_ele = inscription.fk_id_ele
INNER JOIN evaluation ON note.id_eval = evaluation.id_eval
INNER JOIN classe ON evaluation.id_classe = classe.id_classe



  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2016 à 15:56:58

-mon principal soucis réside dans le faite que lorsqu'on crée une évaluation pour une classe, lorsqu'on veut rentrer les notes rien n'existe encore dans la base de donnée pour cette évaluation.
-Donc on peut pas lister les notes de l’évaluation crée vu qu'elles n'existent pas encore. (lévaluation existe mis pas les notes)

J'ai deux solutions:
-Soit de crée un tableau et compter le nombre d'inscris dans la classe concernant cette evaluation et lister un formulaire vide à remplir avec un nombre de ligne = au nombre d'élèves. Mais ici mon soucis c'est le traitement du tableau pour l'envoi des données dans la base donnée (vérification des "input" s'ils sont rempli d'abord, "name" de ces "input") là j'aurai autant de ligne avec 3 "input" pour chaque élèves avec cette méthode. C'est faisable mais fastidieux.

-Soit lors de la création de l'évaluation, je mets 0 partout pour les élèves de la classe concernèe. Ainsi lorsqu'on clique sur l'évaluation par la suite, on liste les notes depuis la base de donée. On aura partout 0 pour tous les élèves. Et ainsi on aura des lignes modifiables ( on peut utiliser plusieurs façons: envoi et traitement via url $_GET, ou avec javascript en utilisant des scripts du genre fancybox ou x-editable avec bootstrap).

Pour ma part j'ai utilisé la 2e méthode avec x-editable comme j'utilise bootstrap pour le design.
Résultat:

Et ça marche!

  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2016 à 15:59:24

RamechYT a écrit:

Tu ne sais pas à quel point c'est un enfer les logiciels de gestions de note pour les élèves...


loool maintenant je sais :D et le truc c'est que j'aime les défi!

-
Edité par 2boubacar10 13 avril 2016 à 16:00:08

  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2016 à 17:11:40

2boubacar10 a écrit:

1- Nous ne codons pas en php4 mais en php5 vu que PDO n'existe meme pas en php4, donc c'est une erreur de ma part.

2- Je devrais dire que nous codons en procédural (il faut traduire "coder en PHP4" par "coder en procédural" :soleil:)

Sauf que la POO en PHP4 ça existe, au même titre que le procédural en PHP5. Hey, il est même possible de faire du PHP en séquentiel y compris sous PHP7, ce qui implique ne pas utiliser de fonction non plus mais utiliser des instructions comme GOTO (comme on le ferait en langage BATCH pour DOS, en fait). Autant appeler les choses par leur nom. ;)

2boubacar10 a écrit:

3- Voici la modélisation que nous avons fait

[...]

Si je modélise ça graphiquement ça donnerait ça...

Comme tu peux le voir de part les liens dans tous les sens et les annotations que j'ai rajoutées, ça ne manque pas de problèmes... :-°

L'idée de l'utilisateur central était pas mal, elle rejoint un peu ma notion de Personne tout en lui donnant un rôle plus important. Mais autant aller jusqu'au bout, non ? Un utilisateur a un nom et un prénom, certains de ces utilisateurs s'avèrent être des élèves et d'autres des enseignants.

Inutile (et dangereux) de mettre les champs qui se calculent à la volée dans tes tables. Je pense, sur ce schéma, à Professorat.en_cours : qu'est-ce qui fait qu'un professeur est encore en train d'enseigner dans une école ? Il a un CDI en cours (donc pas de date de fin à son contrat) ou un CDD en cours (donc une date de fin fixée dans le futur). Si tu ajoute un champs pour spécifier cette information qui normalement fait l'objet d'une bête condition à la volée, tu vas devoir la mettre à jour tous les jours de manière automatique sous peine de corrompre tôt ou tard tes données en attestant qu'un professeur enseigne dans une école alors que ce n'est plus le cas. :-°

Il faut aussi sérieusement revoir tes notions d'évaluation et de note. Qu'est-ce qu'une note si ce n'est que la quantification du résultat d'une évaluation ? Qu'est-ce qu'un devoir si ce n'est un type d'évaluation. Donc une note ne peut pas avoir 2 devoir et une composition, et le tout appartenir à une évaluation, ça n'a pas de sens...

  • Partager sur Facebook
  • Partager sur Twitter
27 avril 2016 à 16:28:17

Darth Killer a écrit:

2boubacar10 a écrit:

1- Nous ne codons pas en php4 mais en php5 vu que PDO n'existe meme pas en php4, donc c'est une erreur de ma part.


Hey tu m'as pas bin lu j'ai bien dit PDO, pas POO!

J'etudie ta modelisation et je te tiens au courant bientot!
  • Partager sur Facebook
  • Partager sur Twitter
27 avril 2016 à 16:35:04

Oui j'ai bien lu. Je parlais de POO en réponse à l'association préjugée "PHP4 == procédural". ;)
  • Partager sur Facebook
  • Partager sur Twitter