Foros del Web » Programando para Internet » PHP » CodeIgniter »

CodeIgniter: Los resultados de una query no se muestran donde debe ir la vista

Estas en el tema de CodeIgniter: Los resultados de una query no se muestran donde debe ir la vista en el foro de CodeIgniter en Foros del Web. Hola por aquí, estoy trabajando con CodeIgniter: He hecho una consulta a la Base de Datos usando la clase Active Record y todo sale bien, ...
  #1 (permalink)  
Antiguo 08/10/2010, 09:29
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Exclamación CodeIgniter: Los resultados de una query no se muestran donde debe ir la vista

Hola por aquí, estoy trabajando con CodeIgniter: He hecho una consulta a la Base de Datos usando la clase Active Record y todo sale bien, osea, no me manda ningún error, el problema es que los resultados de la consulta no se muestran donde deberían, que es el lugar donde se carga la vista, les pongo algo de código a ver si me pueden ayudar...

Tengo un controlador users.php que carga un modelo y este a su vez sirve una vista (como este ejemplo de la documentación):
Código PHP:
Ver original
  1. <?php
  2. class Users extends Controller{
  3.  
  4.     function index()
  5.     {
  6.         // Cargamos el header de la página \HTML
  7.         $this->load->view('/cpanel/head');
  8.  
  9.         // Cargamos las vistas
  10.         $this->load->view('/cpanel/header');
  11.         $this->load->view('/cpanel/sidebar');
  12.         $this->load->view('/cpanel/users_nav_options');
  13.  
  14.         // Cargamos el modelo que sirve la vista
  15.         $this->load->model('/cpanel/Users_query');
  16.         $users_show['users_query_get'] = $this->Users_query->users_query_select();
  17.         $this->load->view('/cpanel/users', $users_show);
  18.  
  19.         // Cargamos el footer de la página \HTML
  20.         $this->load->view('/cpanel/footer');
  21.     }
  22. }

Tengo un modelo users_query.php:
Código PHP:
Ver original
  1. <?php
  2. class Users_query extends Model{
  3.  
  4.     function Users_query()
  5.     {
  6.         parent::Model();
  7.     }
  8.  
  9.     // Mostrar Usuarios
  10.     function users_query_select()
  11.     {
  12.         $users_query_insert = $this->db->get('gd_usuarios');
  13.        
  14.         foreach($users_query_insert->result() as $users_row)
  15.         {
  16.             echo $users_row->usuario_nombre;
  17.         }
  18.     }
  19. }

Y en la vista users.php, entre otras tags html, tengo esto:
Código PHP:
Ver original
  1. <?php echo $users_query_get; ?>
Que no me manda absolutamente nada, pues si le paso un bar_dump da resultado NULL.

Sé que debo estar haciendo algo mal, lo que pasa es que me muestra el resultado justo encima de la etiqueta <html> cuando veo el código de mi página y no donde debe, que tiene esta estructura más o menos:
Código HTML:
Ver original
  1. Aquí es donde se muestra el resultado de la consulta ...
  2. <!DOCTYPE html>
  3. <html dir="ltr" lang="es-CU">
  4.     <!-- Todo lo que va aqui -->
  5. </head>
  6. <div id="wrapper">
  7.     <aside>
  8.         <!-- Todo lo que va aqui -->
  9.     </aside>
  10.     <div id="content">
  11.         <section>
  12.             <h3>Administrar Usuarios</h3>
  13.             <!-- Aquí es donde se debería mostrar
  14.                el resultado de la consulta -->
  15.         </section>
  16.     </div>
  17. </div>
  18.     <!-- Todo lo que va aqui -->
  19. </body>
  20. </html>
Mi problema debe estar en la manera en que planteo el modelo, pues si le quito el echo al foreach no pasa nada, ni siquiera muestra los resultados...

Gracias de antemano
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 08/10/2010, 09:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

El problema creo es que en tu modelo, haces un echo de los datos, en lugar de regresarlos y enviarlos a la vista...
  #3 (permalink)  
Antiguo 08/10/2010, 09:48
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Hola profe... hace tiempo que no coincidía con Ud.

He leído la documentación de CodeIgniter de la A a la Z y de la Z a la A y no doy pie con bola... ¿Cómo haría eso de regresar los datos desde el modelo? debería ser al controlador verdad, ¿y no es eso lo que estoy haciendo aquí?
Código PHP:
Ver original
  1. // Cargamos el modelo que sirve la vista
  2.  $this->load->model('/cpanel/Users_query');
  3. $users_show['users_query_get'] = $this->Users_query->users_query_select();
  4. $this->load->view('/cpanel/users', $users_show);
¿y de paso enviándolos a la vista?
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 08/10/2010, 11:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

No he usado CodeIgniter pero es que hagas un simple return de tu función hacia el controlador, es como el paso en cualquier función:
Código PHP:
Ver original
  1. function foo()
  2. {
  3.       $data = array();
  4.       while(/*stuff*/) {
  5.                $data[] = $row;
  6.       }
  7.  
  8.       return $data;
  9. }
  10.  
  11. function bar() {
  12.         // stuff
  13.         $this->view->something = foo();
  14. }

Aqui la clave es el return.

Saludos.
  #5 (permalink)  
Antiguo 08/10/2010, 12:07
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Cita:
Iniciado por rogertm Ver Mensaje
Hola profe... hace tiempo que no coincidía con Ud.

He leído la documentación de CodeIgniter de la A a la Z y de la Z a la A y no doy pie con bola... ¿Cómo haría eso de regresar los datos desde el modelo? debería ser al controlador verdad, ¿y no es eso lo que estoy haciendo aquí?
Código PHP:
Ver original
  1. // Cargamos el modelo que sirve la vista
  2.  $this->load->model('/cpanel/Users_query');
  3. $users_show['users_query_get'] = $this->Users_query->users_query_select();
  4. $this->load->view('/cpanel/users', $users_show);
¿y de paso enviándolos a la vista?
En tu modelo solo debes devolver los resultados procesados, nunca cumplir la funcion de una vista.

model

function users_query_select()
{
return $this->db->get('gd_usuarios');

}

En tu controller

$users_show['users_query_get'] = $this->users_query->users_query_select();
$this->load->view('/cpanel/users', $users_show);


y en tu vista planteas el foreach

foreach($users_query_get->result() as $users_row)
{
echo $users_row->usuario_nombre;
}

Conceptos básicos MVC
__________________
Drupal Argentina

Última edición por NUCKLEAR; 08/10/2010 a las 12:13 Razón: Agregar emoticon :D
  #6 (permalink)  
Antiguo 08/10/2010, 12:54
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Ufff... ya había andado medio Google, foro de CodeIgniter incluido y no daba con la solución...

Gracias a ustedes dos por ayudarme... Tengo que ir aprendiendo estos conceptos básicos del MVC

Saludos... Creo que ya tengo Santo para ponerle velas...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #7 (permalink)  
Antiguo 08/10/2010, 13:52
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
De acuerdo Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Y ahora hasta los metí a todos dentro de una tablita... en la vista puse esto:
Código PHP:
Ver original
  1. <?php
  2. $this->table->set_heading(array(
  3.                         'Nombre de Usuario',
  4.                         'Correo Electr&oacute;nico',
  5.                         'Nombre de Login',
  6.                         'Nivel de Acceso'));
  7. foreach($users_query_get->result_array() as $users_row)
  8. {
  9.     $this->table->add_row(array(
  10.                         $users_row['usuario_nombre'],
  11.                         $users_row['usuario_email'],
  12.                         $users_row['usuario_login'],
  13.                         $users_row['usuario_roll']));
  14. }
  15. echo $this->table->generate();
  16. ?>
xD
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #8 (permalink)  
Antiguo 08/10/2010, 17:04
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Sin dudas que Codeigniter es un Gran framework(aunque dependiendo como trabajes puede ser una gran libreria de funciones). Lo que me gusta es que no te ata a nada tu mismo le pones tus convenciones!!. Puedes ponerlo de cabeza y no se quejara, destruirlo, construirlo y siempre va a funcionar :D

Obviamente no es para los puristas, es para gente practica que quiere ver resultados rápidos.
__________________
Drupal Argentina
  #9 (permalink)  
Antiguo 12/10/2010, 06:43
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

En efecto, los resultados están al momento, y una de las cosas que más me gusta es que la documentación está muy detallada y masticadita ...

Yo nunca había trabajado con un FrameWork y no tengo idea de como pueda ser otro, pero este está sencillamente genial...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #10 (permalink)  
Antiguo 22/10/2010, 08:33
Avatar de RonaldNet  
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Hola a todos yo estoy tb empieso con este frame work!! y apropósito de la consulta de roger... q pasaria si en lugar d mostrar los datos d una sola tabla quiero mostrar de varias, por ejemplo:

Código:
foreach($users_query_get->result_array() as $users_row)
{
    $this->table->add_row(array(
                        $users_row['usuario_nombre'],
                        $users_row['usuario_email'],
                        $users_row['usuario_login'],
                        $users_row['usuario_roll'],
                        $users_row['usuarios_tel']));   <------------------------
}
donde usuarios_tel pertenece a otra tabla pero tiene el mismo id d la tabla usuario
me refiero a una relación 1 a 1

alguien me podria sacar d esa duda?
  #11 (permalink)  
Antiguo 22/10/2010, 09:23
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CodeIgniter: Los resultados de una query no se muestran donde debe ir la v

Hola RonaldNet, la cuestión está en la manera que plantees tu consulta a la base de datos en el modelo, que es la que te recupera ese dato de la tabla tlfn... ¿Puedes mostrarlo por favor?
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose

Etiquetas: mvc, php
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 10:57.