Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Pasar resultado de una consulta a una funcion

Estas en el tema de Pasar resultado de una consulta a una funcion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos. Espero que esten muy bien y me puedan colaborar con la siguiente consulta: Tengo la siguiente funcion en un modelo: Código PHP: ...
  #1 (permalink)  
Antiguo 05/06/2010, 03:38
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 7 meses
Puntos: 13
Exclamación Pasar resultado de una consulta a una funcion

Hola a todos. Espero que esten muy bien y me puedan colaborar con la siguiente consulta:

Tengo la siguiente funcion en un modelo:

Código PHP:
function listar(){
            
$db = new conexion();
            
$db->conectar();
/*consultar() hace lo mismo que mysql_fetch_array, solo que yo lo tengo asi en caso de que me toque cambiar de motor  de BD.
*/
            
$result $db->consultar("SELECT * FROM usuarios ");
            while(
$row $db->obtendatos($result))
                
$result $row[];
            return 
$result;
        }
/*
Intente pasar el objeto asi: return  $db->obtendatos($result); pero no me arroja nada. por eso hice el while haber si funcionaba y tampoco.
*/ 
Tengo el siguiente controlador

Código PHP:
function lista(){
            require_once(
"modelo/usuario.php");
            
$usuario = new usuario();
            
$lista $usuario->listar();
            require_once(
"vistas/usuario/lista.php");
        } 
La verdad no se que codigo colocar en la vista para que me liste todos los usuarios. Alguien me podria colaborar en como hacer que del modelo ( donde se hace la consulta de todos los usuarios) mande la lista de todos los usuarios y poder mostrarlos en la vista ???

Espero hayan entendido, muchas gracias de antemano.
__________________
Juguetes Sexuales
  #2 (permalink)  
Antiguo 05/06/2010, 04:38
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 7 meses
Puntos: 13
Exclamación Respuesta: Pasar resultado de una consulta a una funcion

Bueno, al parecer ya solucione el problema. Pero quisiera saber ustedes que opinan de la solución y si saben de algun otro metodo mas eficaz. Gracias.

Modelo
Código PHP:

function listar(){
            
$db = new conexion();
            
$db->conectar();
            
$result1 $db->consultar("SELECT * FROM usuarios ");
            
$i=0;
            while(
$row $db->obtendatos($result1))
            {
                
$result[$i]['id']     = $row['id'];
                
$result[$i]['nombres'] = $row['nombres'];
                
$result[$i]['apellidos']  = $row['apellidos'];
                
$result[$i]['fechanaci']      = $row['fechanaci'];
                
$result[$i]['correo']         = $row['correo'];
                
$i++;
            }
            return 
$result;
        } 
Controlador
Código PHP:
function lista(){
            require_once(
"modelos/usuario.php");
            
$usuario = new usuario();
            
$res $usuario->listar();
            
$numero count($res);
            require_once(
"vistas/usuario/lista.php");
        } 
Y la vista
Código PHP:
<?php
    
for($i=0;$i<$total;$i++)
{
      echo 
$res[$i]['id']."";
      echo 
$res[$i]['nombres']."";
      echo 
$res[$i]['apellidos']."";
....
    
?>
<?php
     
}  
?>
Me imprime todos los resultados como yo necesitaba.

Ahora la duda es si lo que hice esta bien o hay algo que funcione mejor o depronto viola las reglas de MVC.

Gracias.
__________________
Juguetes Sexuales
  #3 (permalink)  
Antiguo 05/06/2010, 10:49
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: Pasar resultado de una consulta a una funcion

De hecho es correcto lo que haces, es pasar los datos del modelo a la vista, pero si no vas a filtrarlos o procesar algo es recomendable pasar el modelo directo a la vista para evitar hacer redundancia (como dobles ciclos).

Saludos.
  #4 (permalink)  
Antiguo 05/06/2010, 10:57
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 7 meses
Puntos: 13
De acuerdo Respuesta: Pasar resultado de una consulta a una funcion

Lo que pasa es que en la url manejo controlador y accion como parametros, entonces siempre se llamara un controlador acompañado de una accion. Por eso lo hago asi. De todas maneras me alegra saber que voy bien encaminado. Gracias.
__________________
Juguetes Sexuales
  #5 (permalink)  
Antiguo 05/06/2010, 10:59
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 7 meses
Puntos: 13
De acuerdo Respuesta: Pasar resultado de una consulta a una funcion

Cita:
Iniciado por richicasas Ver Mensaje
Lo que pasa es que en la url manejo controlador y accion como parametros, entonces siempre se llamara un controlador acompañado de una accion. Por eso lo hago asi.

Una pregunta:

Si yo en el modelo despues de hacer la consulta pongo algo como

Código PHP:
require_once("vistas/lista.php"); 
No estaria mal visto desde la Ingenieria de Software, al mezclar vistas con modelos de una ???, pues como por ahi dice que el modelo es solo para los datos y que el controlador es el que maneja lo que se hace y lo que no.

De todas maneras me alegra saber que voy bien encaminado. Gracias.
__________________
Juguetes Sexuales
  #6 (permalink)  
Antiguo 05/06/2010, 12:02
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: Pasar resultado de una consulta a una funcion

Ahí si, porque el modelo no tiene porque conocer la vista, la idea es que un modelo sea abstracto y genérico, la vista tiene que ser específica. Si tu atas un modelo a una vista, rompes precisamente con eso.

Saludos.

Etiquetas: funcion, pasar, resultados
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 03:37.