Travail sur l'amélioration du module Database

Re: Travail sur l'amélioration du module Database

par Jennifer Codretto,
Nombre de réponses : 0
Bonjour,sourire
mon travail avance petit à petit, j'ai reussi à ce qu'il pointe la bonne fiche lorqu'on clique sur le tableau de note.
Le Problème :
Mais le hic c'est que : quand il y a plusieurs notes pour un module: il ne veut plus pointé sur la fiche.
exemple:

Module data 1
Module data 2
Module data 3
Murielle
10
2
-
John
8
-
-
Jessy
5
-
-

Ici quand on clique sur la note bleu 2 de Murielle cela ouvre bien la bonne fiche de Murielle .
Mais quand on clique sur une des notes de la colonne jaune cela n'ouvre rien du tout.

Ce que j'ai changé dans le code : dans grade/ lib.php
AVANT
function grade_get_module_link($course, $cminstance, $modid) {
global $CFG;
$sql = "SELECT cm.id, 1 FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules mm, {$CFG->prefix}grade_item i
WHERE i.modid='".$modid."'
AND i.modid=mm.id
AND cm.instance = i.cminstance
AND i.cminstance=".$cminstance."
AND i.courseid=cm.course AND cm.module=mm.id AND i.courseid=$course";
$temp = get_record_sql($sql);
return $temp;
}
APRES
function grade_get_module_link($course,$cminstance, $modid) {
global $CFG;
$sql = "SELECT dr.id, dr.dataid
FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules mm, {$CFG->prefix}grade_item i,{$CFG->prefix}data_records dr, {$CFG->prefix}data d,{$CFG->prefix}data_ratings drs
WHERE i.modid=$modid
AND i.modid=mm.id
AND cm.instance = i.cminstance
AND cm.instance=d.id
AND d.id=$cminstance
AND i.courseid=cm.course AND cm.module=mm.id AND i.courseid=$course
AND d.course=cm.course
AND dr.id=drs.recordid
AND dr.dataid=d.id
";
$temp = get_record_sql($sql);
return $temp;
}
puis dans le code:
AVANT
$link_id = grade_get_module_link($course->id, $all_categories[$category][$assignment]['cminstance'], $all_categories[$category][$assignment]['modid']);
$link =$CFG->wwwroot.'/mod/'.$all_categories[$category][$assignment]['modname'].'/view.php?id='.$link_id->id;

APRES
$link_id = grade_get_module_link($course->id,$all_categories[$category][$assignment]['cminstance'], $all_categories[$category][$assignment]['modid']);
$link = $CFG->wwwroot.'/mod/'.$all_categories[$category][$assignment]['modname'].'/view.php?d='.$link_id->dataid.'&rid='.$link_id->id;

Mon résonnement
- http://localhost/moodle/mod/data/view.php?d=2&rid=5
comprendre à quoi correspond d et rid pour pointer sur la bonne fiche
-le d corrrespond à : numero de la compétence: dataid de la table data_records
-
le rid correspond à : numero de la fiche par rapport à cette compétence : id de la table data_records

Mon debugg m'indique :

Found more than one record in get_record_sql

Notice: Trying to get property of non-object in C:\wamp\www\moodle\grade\lib.php

voilà j'en suis là et je bloque là si vous avez une idée.Je pense qu'il faut peut-être un paramètre en plus dans la fonction comme par exemple le numero de la fiche

exemple : grade_get_module_link($course,$cminstance, $modid, $id) mais je ne vois pas comment l'appeller après dans le code lors du $link_id=.....

Je vous remercie pour votre future réponse
Jennifer