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

Guardar Objetos en sesion

Estas en el tema de Guardar Objetos en sesion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos, tengo un problema, cree un formulario con datos basicos de usuario, estos los guardo en un objeto, y este objeto lo guardo en la ...
  #1 (permalink)  
Antiguo 20/01/2006, 18:33
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
Guardar Objetos en sesion

Saludos, tengo un problema, cree un formulario con datos basicos de usuario, estos los guardo en un objeto, y este objeto lo guardo en la sesion. Entonces, como ocupo guardar y guardar usuarios... hice una arreglo de objetos que se guarde en session,..., en teoria supongo voy bien... bueno dejo el codigo:

class.php
Código PHP:
class Usuario {
  
   public 
$Nombre;
   public 
$Edad;
   public 
$Sexo;
   public 
$Domicilio;
   public 
$Telefono;
   public 
$Salario;
   public 
$RFC;
  
   public function 
__construct($Nombre,$Edad,$Sexo,$Domicilio,$Telefono,$Salario,$RFC
   {
        
$this->Nombre $Nombre;
        
$this->Edad $Edad;
        
$this->Sexo $Sexo;
        
$this->Domicilio $Domicilio;
        
$this->Telefono $Telefono;
        
$this->Salario $Salario;
        
$this->RFC $RFC;
        
$this->Campos = array("Nombre""Edad""Sexo""Domicilio""Telefono""Salario""RFC");
        
   }
  
   public function 
__destruct() {

   }
   public function 
imprime()
   {
    echo 
$this->Nombre;
    echo 
$this->Nombre;
    echo 
$this->Edad;
    echo 
$this->Sexo;
    echo 
$this->Domicilio;
    echo 
$this->Telefono;
    echo 
$this->Salario;
    echo 
$this->RFC;
   }


index.php
Código PHP:
session_start(); 
echo
'<link href="estilo.css" rel="stylesheet" type="text/css">';
require 
"funciones.php";
require 
"class.php";
echo
'<title>: Probando Objetos :</title>';
pon_tabla();
@
$op=$_GET['op'];
@
$file=$_GET['archivo'];
if(
$op=="source")
{
    if(
$file=="class")
     
highlight_file("class.php");
    else
     
highlight_file("index.php");
        
}
else
{
    if(isset(
$_POST['enviar']))
    {
        if(isset(
$_SESSION['cont']))
        {        
         
$_SESSION['cont'] = $_SESSION['cont']+1;
         
$_SESSION['Objetos'][]=new Usuario($_POST['nombre'], $_POST['edad'], $_POST['sexo'], $_POST['domicilio'], $_POST['telefono'], $_POST['salario'], $_POST['rfc']);
          echo 
$_SESSION['cont']; 

         
        }
        else
        {
         
$_SESSION['cont']=1;
         
$_SESSION['Objetos']=array();         
         
$_SESSION['Objetos'][]=new Usuario($_POST['nombre'], $_POST['edad'], $_POST['sexo'], $_POST['domicilio'], $_POST['telefono'], $_POST['salario'], $_POST['rfc']);
          echo 
$_SESSION['cont'];
        }            
    }
        
/* conclusion .. todo esto esta bien.. el pedo es abajo!!!*/
        
/*
esto si jala.. pero ocupo arreglos en sesion.
$Objetos = array (); // Definimos la variable Objetos ce tipo arreglo //
// Llenamos el arreglo con objetos, realizando instancia hacia la clase usuario //
$Objetos[]=new Usuario("Carlos G. Lopez","24","Masculino","Othon Almada #119","2147046","123456","LORC-810930-KW0");
$Objetos[]=new Usuario("Victor M. Lopez","54","Masculino","eduardo lever","565863","15648","GNO-960722-751");
$Objetos[]=new Usuario("Marina de la Rosa","50","Femenino","Reyes y naranjo","154153","2142831","GNO-960722-751");

// Vaciamos nuestro arreglo de objetos, sacando tantos objetos hayamos guardado //
foreach ($Objetos as $Obj)
{
  echo '<br><span class="txt2">'.$Obj.'</span><br>';
  // Por cada objetos, tenemos una variable que guarda los tipos de campos de nuestro objetos //
    foreach($Obj->Campos as $Campo)
      echo '<span class="txt2">'.$Campo.': </span><span class="txt1">'.$Obj->$Campo.'</span><br>';

*/

        /* !!!!FUNCIONAAA!!! :@ */
        
if(isset($_POST['ejecutar']))
        {    
           echo 
'<span class="txt2">Usuarios agregados: '.$_SESSION['cont'].'</span><br>';
            foreach(
$_SESSION['Objetos'] as $Objeto)    
            {    
                
                foreach ( 
$Objeto as $Obj)
                    {
                        echo 
'<br><span class="txt2">'.$Obj.'</span><br>';
                            foreach(
$Obj->Campos as $Campos)
                              echo 
'<span class="txt2">'.$Campos.': </span><span class="txt1">'.$Obj->$Campos.'</span><br>';
                    }            
            }
        }

El problema esta en el vaciado a como veo, porque los datos al parecer si se guardan bien. Hice varios ejemplos ... dos foreach... vaciados manuales.. pero no lo logro imprimir todos los objetos de maenra correcta..



Saludos!
__________________
There is no place like 127.0.0.1

Última edición por kalolo; 21/01/2006 a las 19:23
  #2 (permalink)  
Antiguo 21/01/2006, 20:22
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
Guardar Objetos en sesion

publico esto ya que puede hay personas que van aprendiendo y/o manejando objetos en php (como yo). Igual y no es tan util o muchos se les haga simple, pero soy novaton en php y pienso que puede haya personas aqui que les pueda servir esto:

Basicamente lo que hace es guardar objetos en un arreglo y este arreglo guardarlo en una session, y usarlos mas tarde, en este ejemplo lo que hago es desplegar un formulario para guardar inforamcion basica de usuarios.. lo que hago en vez de ir guardando a la base de datos.. lo guardo en session (el objeto) y poder guardarlos todos en la base de datos.. o dar otro trato.. y no perderlo .. dgiamos que estas capturando muchos usuarios y despues de 30 ocupas ir a ver alguna otra info en tu pagina.. no tengas que abrir otro navegador e ir a consultar.. en esa misma patnalla te paseas por la pagina y mantienes todos tu datos.. sin tener que capturarlos a una BDD ... espero me haya podido explicar... bueno mejor dejo el ejemplo:

Objeto en sesion




Procure comentarlo demanera que se entienda... igual puedem ver el fuente codigo....

Bueno espero sirva de algo... ahora lo que pienso es de una vez guardar ese arreglo de objetos en la base de datos y poder seguir capturando despues sin perder la informacion =)..

Saludos!

p.d. perdonen todas las faltas de ortografia y redaccion tanto aqui como en el codigo je.. pero el frio no me deja escribir bien
__________________
There is no place like 127.0.0.1

Última edición por kalolo; 22/01/2006 a las 11:03
  #3 (permalink)  
Antiguo 21/01/2006, 20:27
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
index.php
Código PHP:
/*- Probando Objetos -*/
/*EL objeto es llenado por la info en los textbox, y almacenado tantas veces le des enviar datos, e impreso al dar ejecutar */ 
session_start(); 
echo
'<link href="estilo.css" rel="stylesheet" type="text/css">';
require 
"funciones.php";
require 
"class.php";
require 
"dBug/dBug.php";
echo
'<title>: Probando Objetos :</title>';
pon_tabla();
@
$op=$_GET['op'];
@
$file=$_GET['archivo'];
if(
$op=="source")
{
    if(
$file=="class")
     
highlight_file("class.php");
    else
     
highlight_file("index.php");        
}
else
{
    if(isset(
$_POST['enviar']))
    {
        if(isset(
$_SESSION['cont']))
        {        
         
$_SESSION['cont']++;
         
$Objeto=new Usuario($_POST['nombre'], $_POST['edad'], $_POST['sexo'], $_POST['domicilio'], $_POST['telefono'], $_POST['salario'], $_POST['rfc']);         
         
$_SESSION['Objetos'][]=serialize($Objeto);//<-- "empaquetamos el objeto
          
echo '<span class="txt2">Usuarios agregados: '.$_SESSION['cont'].'</span>';
         
// serialize a como veo, lo que hace es enpaqutarlo, y agarrar todo el objeto y conevertirlo a .. variable :| 
        
}
        else
        {
         
$_SESSION['cont']=1;
         
$_SESSION['Objetos']=array();         
        
$Objeto=new Usuario($_POST['nombre'], $_POST['edad'], $_POST['sexo'], $_POST['domicilio'], $_POST['telefono'], $_POST['salario'], $_POST['rfc']);
         
$_SESSION['Objetos'][]=serialize($Objeto);//<-- Te laaaaa pelas mendigo objeto!!!
         
echo '<span class="txt2">Usuarios agregados: '.$_SESSION['cont'].'</span>';
         }            
    }
        
/* Imprimos los objetos */
        
if(isset($_POST['ejecutar']))
        {    
           echo 
'<span class="txt2">Total de usuarios agregados: '.$_SESSION['cont'].'</span><br>';
           echo 
'<span class="txt2">: Debug: Session con los objetos aun serialisados :</span>';
           new 
dBug($_SESSION['Objetos']);echo"<br>"
           
            echo 
'<span class="txt2">: Debug: Objetos des-serialisados :</span><br>';
            foreach(
$_SESSION['Objetos'] as $Objeto)    
            {                    
               
$Obj=unserialize($Objeto);//<- :) desempaquetamos 
                
                     
echo '<br><span class="txt2">'.$Obj.'</span><br>';
                        foreach(
$Obj->Campos as $Campos)
                          echo 
'<span class="txt2">'.$Campos.': </span><span class="txt1">'.$Obj->$Campos.'</span><br>';
                echo
"<br>";new dBug($Obj); 
            }
        }

class.php
Código PHP:
class Usuario {
  
   public 
$Nombre;
   public 
$Edad;
   public 
$Sexo;
   public 
$Domicilio;
   public 
$Telefono;
   public 
$Salario;
   public 
$RFC;
  
   public function 
__construct($Nombre,$Edad,$Sexo,$Domicilio,$Telefono,$Salario,$RFC
   {
        
$this->Nombre $Nombre;
        
$this->Edad $Edad;
        
$this->Sexo $Sexo;
        
$this->Domicilio $Domicilio;
        
$this->Telefono $Telefono;
        
$this->Salario $Salario;
        
$this->RFC $RFC;
        
$this->Campos = array("Nombre""Edad""Sexo""Domicilio""Telefono""Salario""RFC");
        
   }
  
   public function 
__destruct() {

   }
   public function 
imprime()
   {
    echo 
$this->Nombre;
    echo 
$this->Nombre;
    echo 
$this->Edad;
    echo 
$this->Sexo;
    echo 
$this->Domicilio;
    echo 
$this->Telefono;
    echo 
$this->Salario;
    echo 
$this->RFC;
   }


funciones.php
Código PHP:
function pon_tabla()
{
    echo
'<table width="650" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><form name="form1" method="post" action="index.php">
      <table width="100%"  border="0" cellspacing="2" cellpadding="0">
        <tr>
          <td class="title1"><a href="?op=source" class="title1-link">[ver source] </a></td>
          <td class="title1"><a href="?op=source&archivo=class" class="title1-link">[codigo fuente de la class]</a></td>
        </tr>
        <tr>
          <td width="15%" class="title1">Nombre:</td>
          <td width="85%"><input name="nombre" type="text" class="estilo-inputs1" id="nombre" size="50"></td>
        </tr>
        <tr>
          <td class="title1">Edad</td>
          <td><input name="edad" type="text" class="estilo-inputs1" id="edad" size="50"></td>
        </tr>
        <tr>
          <td class="title1">Sexo</td>
          <td><input name="sexo" type="text" class="estilo-inputs1" id="sexo" size="50"></td>
        </tr>
        <tr>
          <td class="title1">Domicilio</td>
          <td><input name="domicilio" type="text" class="estilo-inputs1" id="domicilio" size="50"></td>
        </tr>
        <tr>
          <td class="title1">Telefono</td>
          <td><input name="telefono" type="text" class="estilo-inputs1" id="telefono" size="50"></td>
        </tr>
        <tr>
          <td class="title1">Salario</td>
          <td><input name="salario" type="text" class="estilo-inputs1" id="salario" size="50"></td>
        </tr>
        <tr>
          <td class="title1">RFC</td>
          <td><input name="rfc" type="text" class="estilo-inputs1" id="rfc" size="50"></td>
        </tr>
        <tr>
          <td><input name="enviar" type="submit" class="Boton2" id="enviar" value="    Guardar    "></td>
          <td><input name="ejecutar" type="submit" class="Boton2" id="ejecutar" value=" Imprimir datos "></td>
        </tr>
      </table>
    </form></td>
  </tr>
</table>'
;


__________________
There is no place like 127.0.0.1
  #4 (permalink)  
Antiguo 25/01/2006, 09:10
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Quiero felicitarte... realmente muy bueno... lo que me extraña, es que digas que eres un novato... yo tengo mucho tiempo con php y aun nosé programar en POO... =|... así que me sirve bastante lo que haces, porque necesito aprender a leer esto... jojo...

muy bonito también... solo falta un archivo, pues copie tus códigos...

me falta por copiar dBug.php, pues no lo tiene =/
  #5 (permalink)  
Antiguo 25/01/2006, 10:05
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
je.. dBug.php es una clase .. sirve mas que nada para hacer las impresiones de variables arrays u objetos..
Segui probando y no publice el codigo aqui, mas si se ve en mi pagina,.., probe guardando el objeto en bd para poder continuar su captura despues.. o pasarle la captura a otro usuario (Y)

dBug.php

saludo!
__________________
There is no place like 127.0.0.1
  #6 (permalink)  
Antiguo 27/01/2006, 16:12
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 21 años
Puntos: 0
lo que puedes hacer es serializar el objeto antes de que se termine de ejecutar el script,
ejemplo, si lo que tienes es un vector de objetos, has esto:
serialize($vector), asumiendo que $vector es el que tiene los objetos, esta funcion te devuelve un string, ese guardalo en sesion, despues nada mas haces un:
unserialize($_SESSION["vectorString"]), eso te devuelve el vector con tus objetos, tomando en cuenta que vectorString es el indice de la session donde almacenastes el string del resultado de la serializacion.


Saludos
  #7 (permalink)  
Antiguo 27/01/2006, 18:38
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
no de echo si funcino :)
__________________
There is no place like 127.0.0.1
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:17.