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

Complicado con mvc

Estas en el tema de Complicado con mvc en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente del foro Les cuento que estoy armando un proyecto web con el patron mvc pero vengo complicado. Conozco esto de objetos por java, ...
  #1 (permalink)  
Antiguo 21/12/2009, 20:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 12
Antigüedad: 14 años, 6 meses
Puntos: 0
Complicado con mvc

Hola gente del foro
Les cuento que estoy armando un proyecto web con el patron mvc pero vengo complicado.
Conozco esto de objetos por java, pero en php todavia no le puedo dar en el clavo

Hice mi clase conexion a la base de datos, mi clase Clientes, y un index para el view.

Asi tomo los datos de la base de datos

Código PHP:
  public function consulta($consulta) {  
        
$this->total_consultas++;  
        
$resultado mysql_query($consulta,$this->conexion);  
        if(!
$resultado) {  
            echo 
'MySQL Error: ' mysql_error();  
            exit;  
        }  
        return 
$resultado;   
    } 
Código PHP:
function pasajeDatos() {
      
        
$db = new ConexionDb();
        
$cliente = new Cliente();
          
       
$consulta $db->consulta("SELECT DISTINCT id,title FROM tabla;");
       if(
$db->num_rows($consulta)>0) {
         while(
$resultados $db->fetch_array($consulta)) { 
Lo que me gustaria saber es como con los datos que tomo de la base de datos
puedo crear objetos Clientes y asignarles los valores de la query para luego usarlos en el view.

Yo probe con setters y getters de esta manera, pero no me funciono.

Código PHP:
    function pasajeDatos() {
      
        
$db = new ConexionDb();
        
$cliente = new Cliente();
          
       
$consulta $db->consulta("SELECT DISTINCT id,title FROM tabla;");
       if(
$db->num_rows($consulta)>0) {
         while(
$resultados $db->fetch_array($consulta)) {

                
                
$cliente ->setId($resultados['id']);
                
$cliente ->setNombre($resultados['title']);
                
// $l->
         
}//$resultados['nombre']
         
 
} return $cliente;
 } 
Luego desde el view

Código PHP:
<?php
include_once("../model/ClienteService.php");
include_once(
"../model/Cliente.php");
$ClienteSvc = new ClienteService();
$abc $ClienteSvc -> pasajeDatos() -> getNombre();
$nombre = array($abc );

?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
<?php

foreach ($nombre as $n){
    echo 
$n;
}

?>
    </body>
</html>
Pero solo me devuelve el ultimo valor de la tabla mysql.
Alguno sabe alguna manera de asignarle valores a los objetos desde una base de datos?
O como mejorar la mia?
  #2 (permalink)  
Antiguo 22/12/2009, 12:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Complicado con mvc

Lo que debes de hacer es regresar un array para poder tratarlo, por ejemplo:
Código PHP:
Ver original
  1. public function pasajeDatos()
  2. {
  3.         /* */
  4.         $clientes = array();
  5.         while($result = $db->fetch_array($consulta)) {
  6.                $cliente = new Cliente();
  7.                $cliente->setId($result['id']);
  8.                $clientes[] = $cliente;
  9.         }
  10.  
  11.         return $clientes;
  12. }

y así lo puedes tratar en tu view como un array y recorrerlo en un foreach.

Saludos.
  #3 (permalink)  
Antiguo 23/12/2009, 06:18
 
Fecha de Ingreso: octubre-2009
Mensajes: 12
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Complicado con mvc

Gracias por la ayuda pero sigo sin comprenderlo al 100%.
Ahora la funcion pasaje de datos quedo asi
Código PHP:
public function pasajeDatos()
{
        
$db = new ConexionDb();
        
$consulta $db->consulta("SELECT DISTINCT id,nombre FROM Cliente;");
        
$clientes = array();
        while(
$result $db->fetch_array($consulta)) {
               
$cliente = new Cliente();
               
$cliente->setNombre($result['nombre']);
               
$clientes[] = $cliente;
        }

        return 
$clientes;

y el view quedo algo asi
Código PHP:
<?php
include_once("../model/ClienteService.php");
include_once(
"../model/Cliente.php");
include_once(
"../model/ConexionDb.php");
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
$cs 
= new ClienteService();
$cs ->pasajeDatos();
foreach (
$cs as $clientes){
    echo 
$clientes->getNombre();
//echo $clientes['nombre']:
}
        
?>
    </body>
</html>
EL problema es que no imprime nada esto.
Tambien probe con lo que esta comentado
Alguna sugerencia??
Gracias nuevamente
No se como armarme el for eacho me parece
  #4 (permalink)  
Antiguo 23/12/2009, 12:03
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Complicado con mvc

Código PHP:
<?php 
include_once("../model/ClienteService.php"); 
include_once(
"../model/Cliente.php"); 
include_once(
"../model/ConexionDb.php"); 
?> 
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title></title> 
    </head> 
    <body> 
        <?php 
$cs 
= new ClienteService();

#no es asi esto? 
$cs ->pasajeDatos()->getNombre(); 

# $cs no es un array?
foreach ($cs as $clientes){ 

    echo 
$clientes->getNombre(); 


        
?> 
    </body> 
</html>
__________________
HV Studio
Diseño y desarrollo web
  #5 (permalink)  
Antiguo 24/12/2009, 00:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Complicado con mvc

Te falta asignar el resultado de pasajeDatos() a una variable y esa ciclarla.

Saludos.
  #6 (permalink)  
Antiguo 25/12/2009, 15:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 12
Antigüedad: 14 años, 6 meses
Puntos: 0
Pero eso no lo hago aca?

Código PHP:
$abc = $ClienteSvc -> pasajeDatos() -> getNombre();
$nombre = array($abc );

?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
<?php

foreach ($nombre as $n){
    echo 
$n;
</
html>
}

?>
    </body>
Saludosgracias por todo igual voy a seguir probando

Cita:
Iniciado por elxavier2009 Ver Mensaje
Pero eso no lo hago aca?

Código PHP:
<?php $abc $ClienteSvc -> pasajeDatos() -> getNombre();
$nombre = array($abc );

?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
<?php

foreach ($nombre as $n){
    echo 
$n;
</
html>
}

?>
    </body>
Saludosgracias por todo igual voy a seguir probando
Ademas ahora me tira el siguiente error
Fatal error: Call to a member function getNombre() on a non-object in C:\Documents and Settings\el oso computacion\Escritorio\PHP\wamp\xampplite\htdocs\P hpProject1\view\index.php on line 14

O si pongo esto
Código PHP:
Ver original
  1. public function pasajeDatos()
  2. {
  3.         $db = new ConexionDb();
  4.         $consulta = $db->consulta("SELECT DISTINCT id,title FROM tabla;");
  5.         $clientes = array();
  6.         while($result = $db->fetch_array($consulta)) {
  7.                $cliente = new Cliente();
  8.                $cliente->setNombre($result['title']);
  9.                $clientes[] = $cliente;
  10.         }
  11.  
  12.         return $cliente;
  13. }
No imprime nada, la pagina solo en blanco

Última edición por GatorV; 25/12/2009 a las 23:57
  #7 (permalink)  
Antiguo 25/12/2009, 23:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Complicado con mvc

Deja como te comente, regresa la variable $clientes y para imprimir solo cicla esa variable:
Código PHP:
Ver original
  1. <?php
  2. $clientes = $ClienteSvc->pasajeDatos();
  3. ?>
  4. <html>
  5.     <head>
  6.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7.         <title></title>
  8.     </head>
  9.     <body>
  10. <?php
  11. foreach ($clientes as $cliente){
  12.     echo $cliente->getNombre();
  13. }
  14.  
  15. ?>
  16.     </body>
  17. </html>

Saludos.
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:46.