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

Problema Post y objeto

Estas en el tema de Problema Post y objeto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente creo que mi problema se reduce a que cuando paso por el metodo post un objeto, este se modifica y luego no se ...
  #1 (permalink)  
Antiguo 19/04/2010, 09:24
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 1
Problema Post y objeto

Hola gente creo que mi problema se reduce a que cuando paso por el metodo post un objeto, este se modifica y luego no se reconoce como objeto.

Explicacion:
Tengo dos clases Producto y Proveedor.

Cada Producto pertene a un Proveedor.
CLASE PRODUCTO
aparte de otros atributos tiene un atributo proveedor, que es un objeto Proveedor.

esto lo hago ya que en la tablas de la DB, en la tabla productos tengo un idProveedor que es FK y apunta al Proveedor, almacenado en la Tabla Proveedores.

Digamos que tengo el formulario de carga de producto en NuevoProducto.php
parte de dicho formulario contiene un <SELECT>, que es asi:
Código PHP:
  echo "<select name='listProveedores'>";
  for(
$i=0$i $resultado->cantidad(); $i++){
    
$proveedor =  $resultado->retornar($i);
        echo 
'<option value="' $proveedor '" >' $proveedor->getProveedor() . '</option>';
   } 
   echo 
"</select>"
donde resultado es un array que contiene en cada posicion una instancia del objeto Proveedor, esto esta bien ya que $proveedor->getProveedor() me retorna el nombre del proveedor.

Luego cuando envio el formulario digamos que va a CargarProducto.php

Código PHP:
$producto = new Producto();
$producto->setProducto($_POST["textProducto"]);
$producto->setProveedor($_POST["listProveedores"]); 
// Aca arrancaria el problema, $_POST["listProveedores"] ya no es la instancia de mi objeto y luego le pigo cosas y no se reconoce como objeto 
pero luego cuando intento guardarlo mediante una capa que se encarga de eso, me dice que no es un objeto, por eso saque todo y solo hice lo siguiente:

echo "----".$_POST["listProveedores"]->getIdProveedor();

y sigo con el mismo error pero diferente linea obviamente.

metodo de la Clase Proveedor
function getIdProveedor(){
return $this->idProveedor;
}

ERROR:
Fatal error: Call to a member function getIdProveedor() on a non-object in X:\\XXXXhtdocs\XXX\CargaProducto.php on line 6
  #2 (permalink)  
Antiguo 19/04/2010, 09:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema Post y objeto

lo que sucede es que los objetos no se pueden pasar por formularios... ya que son un tipo abstracto de datos...

entonces, en tu <select/> no haces mas que imprimir un valor que devuelve algún método y así pues jamás estarías pasando objeto alguno.... pero como te menciono, no es posible a través de formularios...

revisa el código HTML generado y busca en el value, verás que ahí no hay nada de lo que pensabas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/04/2010, 10:04
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Problema Post y objeto

Claro, tenes razon, me tendria que haber dado cuenta de eso, pero como lo puedo solucionar... porque las instancias las recupero para llenar el select, y podria pasar el idProvedor por el post, pero luego seria otra consulta para recuperarlo recuperar un objeto que recupere en la pagina anterior (sin usar una sesion).
Lo que se me ocurre es cargar las intancias de los proveedores en un sesion que sea un vector y luego pasar como valor del select "post" el indice de la sesion donde se encuentra la instancia, eso funcionaria, pero hay alguno modo mejor?.
  #4 (permalink)  
Antiguo 19/04/2010, 10:11
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: Problema Post y objeto

Puedes volver a consultar por el proveedor usando el valor que te llega por POST.

Recuerda que PHP es un lenguaje stateless, es decir que solo esta "vivo" por una instancia de ejecución o request HTTP, al terminar, todos los objetos son limpiados por el garbage collector.

Guardarlo en una sesión no es lo mejor, ya que recuerda que una base de datos puede ser alimentada por muchas formas, entonces al guardar los datos estas cacheando una parte de los datos que pueden ser modificados mientras estas actualizando, así que es mejor volver a cargar los datos de la base de datos.

Saludos.
  #5 (permalink)  
Antiguo 19/04/2010, 11:22
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 1
De acuerdo Respuesta: Problema Post y objeto

Muchas gracias pateketrueke y GatorV... vere que es lo que hago.

Pero me parece buena la oportunidad para sacarme una duda que he tenido siempre, yo lo que hago es recuperar los datos la menor candidad de veces posibles de la base de datos, es decir a medida que los necesitos recupero los producto,proveedore,etc y los meto la sesion correspondiente en forma de instancias de objetos y de ahi los trabajo, haciendo la menor cantidad de consultas a la base de datos, obviamanente cuando tengo que hacer alguna alta,baja o modificaciones si interactuo con la base de datos y actualizo la sesion para que el cambio sea visible para todos, esta bien asi? o deberia lanzar consultas a la base de datos por cada cosa que necesite, porque por tu respuesta, me da la sensacion de que si.

Muchas gracias a los dos y esperando alguna respuesta.

Saludos.

Nico8287.

Última edición por nico8287; 19/04/2010 a las 11:37
  #6 (permalink)  
Antiguo 19/04/2010, 14:11
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: Problema Post y objeto

Lo que pasa es que te estas olvidando que la naturaleza que este tipo de sistemas son multiusuarios, y si solo modificas o lees hasta que hay un insert o update, puede que no estes trabajando con los datos más recientes.

Imagina un sistema de banco, que no actualizara tu saldo antes de hacer una transacción...
  #7 (permalink)  
Antiguo 19/04/2010, 15:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Problema Post y objeto

Se entiende perfectamente, hay que ver que conviene en cada situacion, pero queda claro que es mejor estar con los datos siempre actualizador, que a mejorar un poco el rendimiento del sistema.

Mucha gracia de nuevo.

Saludos.

Nico8287.

Etiquetas: objeto, post
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 21:29.