Buenas tardes. Tal como indica el titulo estoy necesitando crear checkbox dinámicos al momento de diseñar una busqueda en un formulario que estoy diseñando.
Este es el codigo que estoy utilizando
Código PHP:
<?php
/**
* @file
* Play with teh Form API
*/
/**
* Implementacion hook_menu().
*/
function formexample_menu(){
$items['formexample'] = array(
'title' => 'Accede al formulario',
'page callback' => 'drupal_get_form',
'page arguments' => array('formexample_nameform'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM
);
return $items;
};
/**
* Definir el formulario.
*/
function formexample_nameform(){
/**
* Función diseñada para obtener todos los cursos y los nid de los cursos
**/
function formexample_cursos() {
$result = db_query("SELECT title, nid FROM {node} where type = 'cursos'");
foreach ($result as $result) {
$i= $result->nid;
$nombre_cursos[$i] = $result->title;
}
return $nombre_cursos;
};
//Se define el fieldset(Contenedor) llamado Curso
$form['cursos'] = array(
'#title' => t('Elegie los estudiantes del Curso'),
'#type' => 'fieldset',
'#description' => t('Información sobre los Cursos'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
//Se define el combobox en el cual contiene todos los nodos tipo Cursos así como tambien los nid de dichos nodos.
$form['cursos_options'] = array(
'#type' => 'value',
'#value' => formexample_cursos(),
);
$form['cursos']['nombres_de_cursos'] = array(
'#title' => t('Busca el Curso'),
'#type' => 'select',
'#description' => t('Por favor selecciona un Curso'),
'#options' => $form['cursos_options']['#value'],
);
// Campo utilizado para proporcionar la busqueda
$form['cursos']['obtener_id_nodo'] = array(
'#title' => '',
'#type' => 'textfield',
'#default_value' => variable_get('obtener_id_nodo', '0'),
'#access' => false,
);
$form['cursos']['submit'] = array(
'#type' => 'submit',
'#value' => t('Buscar Alumnos '),
);
function prueba () {
drupal_set_message(t('Prueba')) ;
}
$form['Cambiar de cursos'] = array(
'#type' => 'submit',
'#value' => t('Cambiar de Cursos'),
'#submit' => array('prueba'),
);
$form['SegundaSeccion'] = array(
'#title' => t('Resultados de los estudiantes'),
'#type' => 'fieldset',
'#description' => t('Resultado de Estudiantes'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
//Campo utilizado para mostrar los resultados de la busqueda
$form['SegundaSeccion']['results'] = array(
'#type' => 'item',
'#title' => t('Resultados de su busqueda'),
'#markup' => busqueda_alumnos(), // Vea que usé markup en lugar de value.
);
return $form;
}
/**
* Validate the form.
*/
function formexample_nameform_validate(&$form, &$form_state){
$cursos_key = $form_state['values']['nombres_de_cursos'];
$cursos = $form_state['values']['cursos_options'][$cursos_key];
if (trim($form_state['values']['obtener_id_nodo']) == '') {
form_set_error('obtener_id_nodo', 'Error en la busqueda. Intentelo mas tarde.');
}
}
/**
* Handle post_validate form submission.
*/
function formexample_nameform_submit(&$form, &$form_state){
$cursos_key = $form_state['values']['nombres_de_cursos'];
$cursos = $form_state['values']['cursos_options'][$cursos_key];
variable_set('obtener_id_nodo', $cursos_key);
drupal_set_message(t('El curso es %cursos y el id es %idcurso y %jeremi',array('%cursos' => $cursos, '%idcurso' => $cursos_key, '%jeremi' => variable_get('obtener_id_nodo'))));
}
/**
*funcion que conecta base de datos externa y genera la listo o resultado
*/
function busqueda_alumnos()
{
$output='';
db_set_active('sinergias');
//se obtiene el id del nodo y se pasa a la variable $nid
$nid= variable_get('obtener_id_nodo');
$sql = "SELECT users.uid uid, users.name name, field_data_field_profile_mi_curso_actual_es.field_profile_mi_curso_actual_es_nid nid, node.title title
FROM node INNER JOIN (field_data_field_profile_mi_curso_actual_es INNER JOIN (profile INNER JOIN users ON profile.uid = users.uid) ON
field_data_field_profile_mi_curso_actual_es.entity_id = profile.pid) ON
node.nid = field_data_field_profile_mi_curso_actual_es.field_profile_mi_curso_actual_es_nid where nid = '$nid'";
$result = db_query($sql);
db_set_active('default');
$header = array('UID', 'NAME','NID', 'TITLE' );
$data = array();
foreach ($result as $row)
{
$data[] = array($row->uid, $row->name, $row->nid, $row->title);
}
$output = theme('table', array('header' => $header, 'rows' => $data ));
return $output;
}
lo que deseo es que en la parte del código donde muestro los resultados
Código PHP:
$header = array('UID', 'NAME','NID', 'TITLE' );
$data = array();
foreach ($result as $row)
{
$data[] = array($row->uid, $row->name, $row->nid, $row->title);
}
$output = theme('table', array('header' => $header, 'rows' => $data ));
return $output;
en ves de que de que muestre el campo $row->uid me muestre un checkbox pero que en el valor tenga el uid del usuario. Espero haberme explicado bien.
Saludos

Comments
Tu post es algo confuso.
Tu post es algo confuso. Primero creo que deberías indicar bien lo que quieres lograr. Nada más viendo código es medio difícil.
Ve si puedes formatear también mejor tu pregunta. El código PHP en teoría se debería de ver con colores para leerlo más fácil
<?php$result = db_query('SELECT * FROM {node} LIMIT 10');
foreach ($result as $obj) {
// do something
}
?>
Gracias por responder tan
Gracias por responder tan rapido.
Explicaré mas detallado lo que quiero.
Yo estoy diseñando una página para un colegio.
Agregué un tipo de contenido llamado curso y agregué varios cursos.
Agregué un campo con el modulo profile2 llamado curso_actual en el cual se enlaza a los contenidos tipo curso.
En este sentido, estoy diseñando un módulo el cual busca todos los alumnos y necesito seleccionar algunos alumnos en especifico y para esto necesito diseñar un query el cual me genere por cada usuario un checkbox para poder seleccionar al alumno que deseo.
En este sentido diseñé una función que llene un combobox con todos los cursos para poder realizar la busqueda de aquellos alumnos que en el campo curso_actual tenga un curso.
la funcion es la siguiente:
<?php
function formexample_cursos() {
$result = db_query("SELECT title, nid FROM {node} where type = 'cursos'");
foreach ($result as $result) {
$i= $result->nid;
$nombre_cursos[$i] = $result->title;
}
return $nombre_cursos;
};
?>
El combobox con los cursos es el siguiente:
<?php
$form['cursos_options'] = array(
'#type' => 'value',
'#value' => formexample_cursos(),
);
$form['cursos']['nombres_de_cursos'] = array(
'#title' => t('Busca el Curso'),
'#type' => 'select',
'#description' => t('Por favor selecciona un Curso'),
'#options' => $form['cursos_options']['#value'],
);
?>
Utilizo este campo para poder pasarle el nodo id del curso
<?php
// Campo utilizado para proporcionar la busqueda
$form['cursos']['obtener_id_nodo'] = array(
'#title' => '',
'#type' => 'textfield',
'#default_value' => variable_get('obtener_id_nodo', '0'),
'#access' => false,
);
?>
Utilizo este campo para mostrar el resultado de la busqueda del query que diseñé
<?php//Campo utilizado para mostrar los resultados de la busqueda
$form['SegundaSeccion']['results'] = array(
'#type' => 'item',
'#title' => t('Resultados de su busqueda'),
'#markup' => busqueda_alumnos(), // Vea que usé markup en lugar de value.
);
?>
En la siguiente función donde se realiza el submit por medio del codigo
variable_set('obtener_id_nodo', $cursos_key);
le paso el código del id del nodo a la variable obtener_id_nodo
<?php
function formexample_nameform_submit(&$form, &$form_state){
$cursos_key = $form_state['values']['nombres_de_cursos'];
$cursos = $form_state['values']['cursos_options'][$cursos_key];
variable_set('obtener_id_nodo', $cursos_key);
?>
Diseñé una función llamada busqueda_alumnos() la cual me permite realizar la busqueda de aquellos alumnos donde concuerde el curso.
<?php
function busqueda_alumnos()
{
$output='';
db_set_active('sinergias');
//se obtiene el id del nodo y se pasa a la variable $nid
$nid= variable_get('obtener_id_nodo');
$sql = "SELECT users.uid uid, users.name name, field_data_field_profile_mi_curso_actual_es.field_profile_mi_curso_actual_es_nid nid, node.title title
FROM node INNER JOIN (field_data_field_profile_mi_curso_actual_es INNER JOIN (profile INNER JOIN users ON profile.uid = users.uid) ON
field_data_field_profile_mi_curso_actual_es.entity_id = profile.pid) ON
node.nid = field_data_field_profile_mi_curso_actual_es.field_profile_mi_curso_actual_es_nid where nid = '$nid'";
$result = db_query($sql);
db_set_active('default');
$header = array('UID', 'NAME','NID', 'TITLE' );
$data = array();
foreach ($result as $row)
{
$data[] = array($row->uid, $row->name, $row->nid, $row->title);
}
$output = theme('table', array('header' => $header, 'rows' => $data ));
return $output;
}
?>
En la parte que estoy un poco perdido es en la parte del codigo siguiente:
<?phpforeach ($result as $row)
{
$data[] = array($row->uid, $row->name, $row->nid, $row->title);
}
$output = theme('table', array('header' => $header, 'rows' => $data ));
?>
ya que donde dice $row->uid necesito que en vez de mostrar el id del usuario, necesito que se cree un checkbox y se le agregue el valor del $row->uid para poder seleccionar al usuario que deseo.
Espero haberme explicado mejor.
Saludos.
Ok. Creo que medio entendí.
Ok. Creo que medio entendí. Yo lo que he hecho para desplegar formas en tablas es:
<?phpforeach ($grades as $id => $grade) {
//...
$form['grade'][$id]['exempt'] = array(
'#type' => 'checkbox',
'#default_value' => $grade['exempt'],
);
}
?>
<?phpreturn render_form_as_table(drupal_get_form('my_form', $grades));
?>
<?phpfunction render_form_as_table($form) {
$ids = element_children($form['grade']);
$header = array();
$header += array(
'name' => t('Name'),
'title' => t('Assignment Title'),
'grade' => t('Grade'),
'exempt' => t('Exempt'),
'note' => t('Note'),
'date' => t('Grade Date'),
);
$rows = array();
foreach ($ids as $id) {
// .. other elements of the row
$row[] = array(
'data' => drupal_render($form['grade'][$id]['exempt']),
'class' => 'exempt-box',
);
// .. other elements
$rows[] = array('data' => $row);
}
$output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('gradebook'))));
$output .= '<div>' . drupal_render($form['submit']) . drupal_render($form['cancel']) . '</div>';
$output .= drupal_render_children($form);
$variables['element'] = $form;
$variables['element']['#children'] = $output;
return theme_form($variables);
}
?>