Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/07/2016, 12:44
jeremiselxi
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 22
Respuesta: Usar un tableselect con ajax en D7

2da parte
Código PHP:
Ver original
  1. //validamos los campos que queremos.
  2.  
  3. function form_validate($form, &$form_state) {
  4.  
  5.   if ($form_state['values']['Curso'] == 0) {
  6.  
  7.  
  8.     form_set_error('Curso', t('Debe seleccionar un curso'));
  9.  
  10.   }
  11.  
  12. }
  13.  
  14.  
  15.  
  16.  
  17. //Esta función llama el campo cursos a través de ajax.
  18. function buscar_materias_de_cursos_callback ($form, &$form_state) {
  19.  
  20. //Eliminamos las opciones que tiene actualmente el tableselect
  21. unset($form['cursos_a_clonar_fieldset']['materiascontenedor']['materias_select']['#options']);
  22.  
  23.  
  24.  
  25. //Verificamos si está definida el valor del curso primero,
  26. //si no está definido entonces le agregamos el valor 0  a la variable $valor_del_curso_inicial
  27. //de lo contrario entonces le pasamos el valor de este a la variable $valor_del_curso_inicial
  28. if  (!isset($form_state['values']['Curso'])) {
  29. $valor_del_curso_inicial=0;
  30. }
  31. else {
  32. $valor_del_curso_inicial=$form_state['values']['Curso'];
  33. }
  34.  
  35.  
  36. //le indicamos que busque los nuevos valores a través de la función obtener_materias_opciones pasándole la variable $valor_del_curso_inicial
  37. $form['cursos_a_clonar_fieldset']['materiascontenedor']['materias_select']['#options']= obtener_materias_opciones($valor_del_curso_inicial);
  38.  
  39. return $form['cursos_a_clonar_fieldset']['materiascontenedor'];
  40.  
  41. }
  42.  
  43. function obtener_materias_opciones($nid_materias) {
  44.  //Buscamos en la api el codigo insertado
  45.  
  46.   $sql = db_query("select n.nid, n.title, n.type, f.bundle, f.entity_id, f.field_materia_curso_asignado_nid from node n inner join field_data_field_materia_curso_asignado f on n.nid = f.entity_id where f.field_materia_curso_asignado_nid= '".$nid_materias."' order by n.title asc ");  
  47.  
  48.   $result = db_query($sql);
  49.  
  50.   $rows = array();
  51.   foreach ($result as $dbrow) {
  52.     $rows[$dbrow->nid] = array(
  53.     'nid' => $dbrow->nid,
  54.     'title' => $dbrow->title,
  55.      );
  56.    }
  57.  
  58.  
  59. return $rows;
  60. }
  61.  
  62. //funcion para obtener los cursos.
  63.  function obtener_cursos_opciones(){
  64.   $result = db_query("SELECT nid, title FROM node where type='cursos' order by title asc");
  65.   $curso=array('');
  66.  
  67.   foreach ($result  as $result) {
  68.     $curso[$result->nid] = $result->title;
  69.  
  70.   }
  71.   return $curso;
  72. };
  73.  
  74.  
  75.  
  76.  
  77. function obtener_cursos_opciones_tableselect() {
  78.  //Buscamos en la api el codigo insertado
  79.  
  80.   $sql = db_query("select n.nid, n.title from node n where n.type= 'cursos' order by title asc ");  
  81.  
  82.   $result = db_query($sql);
  83.  
  84.   $rows = array();
  85.   foreach ($result as $dbrow) {
  86.     $rows[$dbrow->nid] = array(
  87.  
  88.     'nid' => $dbrow->nid,
  89.     'title' => $dbrow->title,
  90.      );
  91.    }
  92.  
  93.  
  94. return $rows;
  95. }