duda de funciones moodle

duda de funciones moodle

de Sofia Herrera -
Número de respuestas: 5
holas!
recurro a la ayuda de todos ustedes.
quiero saber que hace el metodo set_field() o el metodo insert_record() , como funcionan?? o en que se diferencian, he buscado en la red y no encuentro documentacion que me respalde, alguien me puede explicar estas funciones???.

gracias anteladamente

atte. Sofia





Promedio de valoraciones: -
En respuesta a Sofia Herrera

Re: duda de funciones moodle

de Moises Carretero -
Hola Sofia.

La diferencia está en que con set_field actualizas el valor de un campo en una tupla de la base de datos, mientras que con insert_record lo que haces es insertar una tupla en la base de datos.

Como ejemplo de uso: si tienes un objeto como el siguiente

$studient->name='Antonio'
$studient->surname='Garcia'
$studient->email='agarcia@xxx.com'
$studient->country='España'
$studient->dni='4444444A'

para insertarlo en una tabla llamada 'students' en la base de datos sólo tienes que poner: insert_record ('students', $studient).

Si ahora quieres cambiar su emal por el de 'agarcia@yyy.com', lo puedes hacer con set_field del siguiente modo: set_field('students', 'email', 'agarcia@yyy.es', 'dni', '4444444A'). Esto simplemente ejecuta la siguiente sentencia sql:

UPDATE students SET email='agarcia@yyy.es' WHERE dni='4444444A'

Espero haber sido lo suficientemente claro. De todas formas creo que en la documentación interna de Moodle está bastante bien explicado.

Saludos.
En respuesta a Moises Carretero

Re: duda de funciones moodle

de Guillermo González -
Pues yo estoy teniendo problemas con insert_record en Moodle 1.7, me explico:

Sea la siguiente tabla:

CREATE TABLE `prefix_grupos_de_alumnos` (
`id` int(10) unsigned NOT NULL auto_increment,
`course` int(10) unsigned NOT NULL default '0',
`alumno` varchar(255) collate utf8_unicode_ci NOT NULL default '0',
`id_grupos` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE (`course`,`alumno`)
) TYPE=MyISAM;

y el siguiente php:

<?
$g->id='69';
$g->course='69';
$g->alumno='PEPE';
$g->id_grupos='29';
echo insert_record('grupos_de_alumnos',$g);
?>

He comprobado que se llama a insert_record, pero a pesar de que se llama, no ocurre nada :_(

Alguien sabe qué puede fallar?
En respuesta a Guillermo González

Re: duda de funciones moodle

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda
Comprueba el resultado de insert_record(). Devuelve false si algo ha fallado. Si es así, puedes activar la depuración de los accesos a la base de datos, para que en caso de problemas, genere información de lo que está haciendo la capa de acceso a base de datos, con todo lujo de detalles.

Saludos. Iñaki.
En respuesta a Iñaki Arenaza

Re: duda de funciones moodle

de Guillermo González -
Gracias Iñaki,

Si hago una insercción cualquiera desde view.php no hay problema, el fallo es que tengo un formulario, y la insercción la hago en el archivo al que llama el action de dicho formulario. Comprado que devuelve false, pero imposible depurar, claro:

<?php

require_once("../../lib/dmllib.php");
$g->id='69';
$g->course='69';
$g->alumno='pepe';
$g->id_grupos='0';
if(insert_record('grupos_de_alumnos',$g)==false)
echo "FALSE";
?>

En fin, seguí investigando, y el asunto es que faltaba el require_once("../../config.php");

por el resto, funciona bien.

Gracias de nuevo sonrisa