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
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.
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.
Gracias Moises lo comprendi perfectamente, me esta siendo muy util.
salu2
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?
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?
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.
Saludos. Iñaki.
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
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