Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

[SOLUCIONADO] Llenar un combobox con datos de la base de datos.

Estas en el tema de Llenar un combobox con datos de la base de datos. en el foro de Drupal en Foros del Web. Buenas tardes amigos drupaleros. Para motivo de aprendizaje quiero lograr hacer que un combobox se llene con la tabla views_view que se instala con drupal ...
  #1 (permalink)  
Antiguo 01/12/2012, 15:46
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 22
Llenar un combobox con datos de la base de datos.

Buenas tardes amigos drupaleros.

Para motivo de aprendizaje quiero lograr hacer que un combobox se llene con la tabla views_view que se instala con drupal 7


para ello estoy creando un pequeño modulo llamado

redireccionar



cree el redireccionar.info

Código PHP:
Ver original
  1. name = Redireccionar
  2. description = "Modulo para Redireccionar de una vista a otra."
  3. package = Redireccionar de una vista a otra.
  4. core = 7.x
  5. files[] = redireccionar.module


y el archivo redireccionar.module

tiene lo siguiente

Código PHP:
<?php

/**
* @file
* Modulo para redireccionar de una vista a otra.
*/
/**
* Implementación del hook_menu()
*/

function redireccionar_menu () {
$items['Redireccionar/redireccionar-vistas'] = array (
'title' => 'Redireccionar una vista a otra'
'page callback' => 'drupal_get_form',
'page arguments' => array('redireccionar_vistas'),
'access callback' => TRUE,

);
return 
$items;

}


/**
* Callback que implementa la página: Redireccionar/redireccionar-vistas
*/



function redireccionar_vistas() { 


$options = array('ops1' => 'Vista1''ops2' => 'Vista2''ops3' => 'Vista3');

$form['combo1'] = array('#type' => 'select',
'#title' => t('Elige la vista'),
'#options' => $options);

return 
$form;
}

en este caso el combobox llamado combo1

como tiene la variable

Código PHP:
$options = array('ops1' => 'Vista1''ops2' => 'Vista2''ops3' => 'Vista3'); 
se llena de esos valores. Yo tengo esta parte que busca en la base de datos

Código MySQL:
Ver original
  1. $result = db_query("SELECT name FROM {views_view} ");
  2. while( $fila = $result->fetchAssoc() ) {
  3.         print $fila['name'];
  4.                 echo "<br>" ;
  5. }

pero no se como agregarle la informacion que trae el codigo que busca en la base de datos con el combo1.

yo encontre este codigo en internet pero no he podido aplicarlo

Código PHP:
//....
$form['nombre_profesores'] = array(
    
'#type' => 'select',
    
'#title' => t('Selected'),
    
'#options' => mimodulo_get_nombre_profesores(),
);

/**
* Get nombre de los profesores

* return
*   Gets nombre de los profesores
*/
function mimodulo_get_nombre_profesores() {
  
$result db_query("SELECT name FROM persona WHERE tipo_persona like 'profesor' ");
  while (
$reg db_fetch_object($result)) {
    
nombre_profesores[] = $reg->name;
  }
  return 
nombre_profesores;


Gracias anticipadas.
  #2 (permalink)  
Antiguo 01/12/2012, 18:05
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años, 1 mes
Puntos: 890
Respuesta: Llenar un combobox con datos de la base de datos.

Buenas noches, en un principio la idea esta bien! Felicidades.
Ahora las correcciones:

Código PHP:
Ver original
  1. function mimodulo_get_nombre_profesores() {
  2.   $result = db_query("SELECT name FROM persona WHERE tipo_persona like 'profesor' ");
  3.   while ($reg = db_fetch_object($result)) {
  4.     nombre_profesores[] = $reg->name;
  5.   }
  6.   return nombre_profesores;
  7. }

Estaba bien como hiciste al principio, armar la query para obtener los datos de views_view

Código PHP:
Ver original
  1. $result = db_query("SELECT name FROM {views_view}");

Podrías usar un foreach para no tener que llamar db_fetch_object ya que de por si db_Query te devuelve un objeto, solo debes recorrerlo.

Código PHP:
Ver original
  1. foreach ($result  as $result) {
  2.     $nombre_profesores[] = $result->name;
  3.   }

Eso devolveria un array secuencial '0' => "name_view_1", '2' => "name_view_2" ahora si le quieres poner un valor al indice, por ejemplo como lo que hiciste primero:

$options = array('ops1' => 'Vista1', 'ops2' => 'Vista2', 'ops3' => 'Vista3');

Solo debes pasar el indice al array:

Código PHP:
Ver original
  1. function mimodulo_get_nombre_profesores() {
  2.   $result = db_query("SELECT name FROM {views_view}");
  3.   $i = 1;
  4.   foreach ($result  as $result) {
  5.     $nombre_profesores['ops' . $i] = $result->name;
  6.     $i++;
  7.   }
  8.   //var_dump($nombre_profesores);
  9.   return $nombre_profesores;
  10. }

Espero haber sido claro. Si no sale postea el error.

Saludos.
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 02/12/2012, 20:17
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 22
Respuesta: Llenar un combobox con datos de la base de datos.

Muchas gracias por tu explicacion me funciono a la perfeccion.
  #4 (permalink)  
Antiguo 15/10/2014, 08:35
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 22
Respuesta: Llenar un combobox con datos de la base de datos.

Buenos días.

Esperando se encuentren bien, estoy necesitando realizar este mismo modulo pero que obtenga datos de una tabla que está en otra base de datos (base de datos Externa).

Podrian ayudarme??

Gracias.
  #5 (permalink)  
Antiguo 15/10/2014, 12:38
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 22
Respuesta: Llenar un combobox con datos de la base de datos.

Buenos días.

Esperando se encuentren bien, estoy necesitando realizar este mismo modulo pero que obtenga datos de una tabla que está en otra base de datos (base de datos Externa).

Podrian ayudarme??

Gracias.

Yo mismo me respondo para cerrar el tema, Pude hacerlo con el codigo encontrado en el siguiente link http://www.leccionespracticas.com/in...emplo-practico


El trozo de codigo para realizarlo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2.  
  3. /**
  4.  * @file
  5.  * Nuestro primer módulo en Drupal (leccionespracticas.com)
  6.  */
  7.  
  8. /**
  9.  * Implementa hook_menu().
  10.  */
  11. function bdexterna_menu() {
  12.   $items['libros/listar'] = array(
  13.     'title' => 'LISTAR LIBROS',
  14.     'page callback' => 'bdexterna_libros_listar',
  15.     'access callback' => TRUE,
  16.   );
  17.   // con lo anterior indicamos que cuando se visite la url libros/listar
  18.   // se muestre una página con título 'LISTAR LIBROS' cuya salida será el
  19.   // resultado de ejecutar la funcion 'bdexterna_listar_libros', que deberemos definir
  20.  
  21.   return $items;
  22. }
  23.  
  24. /**
  25.  * Callback para libros/listar.
  26.  */
  27. function bdexterna_libros_listar() {
  28.  
  29.   $bd_libros = array(
  30.     'database' => 'externaldatabase', // nombre de la BD externa
  31.     'username' => 'root',             // usuario para acceder a la BD externa
  32.     'password' => 'root',             // password del usuario
  33.     'host' => 'localhost',            // host donde se encuentra la BD
  34.     'driver' => 'mysql',              // tipo de BD
  35.   );
  36.  
  37.   try{
  38.       Database::addConnectionInfo('externaldatabase', 'default', $bd_libros);
  39.      db_set_active('externaldatabase');
  40.   }
  41.   catch (Exception $e){
  42.       db_set_active();
  43.      return "se produjo un error al marcar la BD activa: ".$e;  
  44.   }
  45.   $sql = "SELECT * from libros";
  46.   $results = db_query($sql);
  47.   $salida = "";  
  48.   foreach($results as $res){
  49.     $salida = $salida."[ID] =".$res->id."  [TITULO] = ".$res->titulo;
  50.   }  
  51.   db_set_active();
  52.   return $salida;
  53. }
  #6 (permalink)  
Antiguo 15/10/2014, 16:06
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 12 años, 6 meses
Puntos: 47
Respuesta: Llenar un combobox con datos de la base de datos.

Muy interesante, creo que me va a servir para algo que tengo en mente.

Gracias
  #7 (permalink)  
Antiguo 24/05/2016, 14:07
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 3 meses
Puntos: 22
Respuesta: Llenar un combobox con datos de la base de datos.

Favor eliminar este comentario.
  #8 (permalink)  
Antiguo 25/05/2016, 03:35
Avatar de franciscomarin  
Fecha de Ingreso: junio-2009
Ubicación: Terrassa, BCN, CAT
Mensajes: 2.414
Antigüedad: 15 años, 5 meses
Puntos: 327
Respuesta: Llenar un combobox con datos de la base de datos.

jeremiselxi, no se eliminan los mensajes y por favor, no revivas hilos antiguos.

Etiquetas: combobox, modulo, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:23.