Como obtener las notas de un estudiante en un curso por modulo???

Como obtener las notas de un estudiante en un curso por modulo???

de roberto pinto -
Número de respuestas: 2
Buenas tardes!!

Mi duda esta relacionada con la obtencion de las calificaciones por estudiante en un curso donde cada uno de los modulos que conforman dicho curso es una materia por tal motivo se requiere obtener de la base de datos dicha informacion!!! me explico la sumatoria de todas las tareas de ese modulo es la nota definitiva del estudiante... no obstante al momento de exportar la data por el modulo de calificaciones solo muestra las asignaciones del estudiante con su respectiva nota mas no me dice a que modulo pertenece esa asignacion.. me explico ???

a continuacion muestro el select que realice pero el mismo a pesar de traer la calificacion de la tarea no me muestra a que modulo del curso pertenece triste


$con = mysql_connect("localhost","root","123456");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("moodledbname", $con);

$result = mysql_query("select u.username,c.fullname,a.name,a_s.grade,cs.summary
from mdl_user AS u,mdl_course AS c,mdl_groups_members AS gm, mdl_groups AS g,mdl_assignment AS a,mdl_assignment_submissions AS a_s,mdl_grade_items AS gi, mdl_course_sections AS cs where
u.idnumber='10736552'
and gm.userid=u.id
and gm.groupid=g.id
and c.id=g.courseid
and a.course=c.id
and a_s.userid=u.id
and a.id=a_s.assignment
and gi.courseid=c.id
and gi.iteminstance=a.id
and cs.course=c.id
GROUP BY a.id
ORDER BY gi.sortorder",$con);


Print "<table border=1 cellpadding=1 width=900px>";
Print "<tr>";
Print "<td width=125px bgcolor=#C0C0C0><b>Username</b></td>";
Print "<td width=400px bgcolor=#C0C0C0><b>Assignment Name</b></td>";
Print "<td width=300px bgcolor=#C0C0C0><b>Course</b></td>";
Print "<td width=75px bgcolor=#C0C0C0><b>Grade</b></td>";
Print "<td width=75px bgcolor=#C0C0C0><b>modulo</b></td>";
Print "</tr>";
Print "<tr>";
Print "</table>";
$x=0;
Print "<table border=1 cellpadding=1 width=900px>";
while($row = mysql_fetch_array( $result ))
{ $x++;
Print "<tr>";
Print "<td width=125px>".$x. "</td>";
Print "<td width=125px>".$row['username'] . "</td>";
Print "<td width=400px>".$row['name'] . "</td>";
Print "<td width=300px>".$row['fullname'] . "</td>";
Print "<td width=75px>".$row['grade'] . "</td>";
Print "<td width=75px>".strip_tags($row['summary']). "</td>";
Print "</tr>";
}
Print "</table>";

Agradeciendo de antemano cualquier apoyo que me puedan brindar al respecto????

Slds. Roberto Pinto
Promedio de valoraciones: -
En respuesta a roberto pinto

Re: Como obtener las notas de un estudiante en un curso por modulo???

de Xavier Paz -
Primero, y más importante, es altamente recomendable usar las funciones que proporciona Moodle para realizar consultas a la base de datos, en vez de hacer uso de las habituales de PHP para acceder a una base de datos concreta, porque si algo cambia en el entorno, probablemente tendrás que cambiar todo el código.

Dicho esto, creo puedes sacar ideas y funciones directamente de Moodle. Si te fijas, cuando estás en un curso y en el bloque Administracion pulsas en calificaciones, te aparecen las notas de todos los recursos calificables del cursos, por tanto debe haber alguna función o funciones que recolecten y presenten esos datos. Yo empezaría echando un vistazo en grade/report/grader/lib.php y grade/report/grader/index.php. Por lo que he podido ver, la función process_data parece ser la que presenta la información sobre los módulos y notas del curso, pero necesita que le pases los datos.
En respuesta a Xavier Paz

Re: Como obtener las notas de un estudiante en un curso por modulo???

de roberto pinto -
Revisando un poco el codigo y las funciones que nos proporciona moodle he conseguido utilizar las que se muestran a continuacion que al fin y al cabo son las que nos muestra la pantalla calificaciones del curso, no obstante el resultado no cumple con los requerimientos actualmente planteados donde se requiere es pasar por parametro el estudiante y el curso del cual quiero obtener las calificaciones por modulo, por casulidad sabras si existe esa funcion o va a ser necesaria la creacion de la misma?? a continuacion muestro el codigo donde nos muestra las calificaciones de todos los estudiantes dado un determinado curso!!!


<?php
require_once '../../config.php';
require_once $CFG->libdir.'/gradelib.php';
require_once $CFG->dirroot.'/grade/lib.php';
require_once $CFG->dirroot.'/grade/report/grader/lib.php';

$courseid =4;


/// basic access checks
if (!$course = get_record('course', 'id', $courseid)) {
print_error('nocourseid');
}
//require_login($course);
$context = get_context_instance(CONTEXT_COURSE, $course->id);

/// return tracking object
$gpr = new grade_plugin_return(array('type'=>'report', 'plugin'=>'grader', 'courseid'=>$courseid, 'page'=>$page));
if (!isset($USER->grade_last_report)) {
$USER->grade_last_report = array();
}
$USER->grade_last_report[$course->id] = 'grader';


$reportname = get_string('modulename', 'gradereport_grader');
// Initialise the grader report object
$report = new grade_report_grader($courseid, $gpr, $context, $page, $sortitemid);

// final grades MUST be loaded after the processing
$report->load_users();//busca los usuarios del curso
$numusers = $report->get_numusers();
$report->load_final_grades();

/// Print header
print_grade_page_head($COURSE->id, 'report', 'grader', $reportname, false, null, $buttons);

//echo $report->group_selector;
//echo '<div class="clearer"></div>';
// echo $report->get_toggles_html();
$reporthtml .= '<div class="gradeparent">';
$reporthtml .= $report->get_studentnameshtml();
$reporthtml .= $report->get_headerhtml();//nombre de las tareas separadas por bloque
$reporthtml .= $report->get_iconshtml();
$reporthtml .= $report->get_studentshtml();//estudiantes relacionados con el curso
$reporthtml .= $report->get_rangehtml();
$reporthtml .= $report->get_avghtml(true);
$reporthtml .= $report->get_avghtml();
$reporthtml .= $report->get_endhtml();
$reporthtml .= '</div>';

// print submit button
if ($USER->gradeediting[$course->id]) {
echo '<form action="index.php" method="post">';
echo '<div>';
echo '<input type="hidden" value="'.$courseid.'" name="id" />';
echo '<input type="hidden" value="'.sesskey().'" name="sesskey" />';
echo '<input type="hidden" value="grader" name="report"/>';
}

echo $reporthtml;


echo $report->get_studentnameshtml().$report->get_iconshtml().$report->get_rangehtml();
echo "ghjghjghjghjghjgh".$report->get_headerhtml();
// print submit button
if ($USER->gradeediting[$course->id] && ($report->get_pref('showquickfeedback') || $report->get_pref('quickgrading'))) {
echo '<div class="submit"><input type="submit" value="'.get_string('update').'" /></div>';
echo '</div></form>';
}


echo '<div id="hiddentooltiproot">tooltip panel</div>';




echo $x;

print_footer($course);
?>