Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP - objekty a $_SESSION

Zdravím,
můj dotaz se týká uložení dat objektu do session a jejich následném získání zpět. Nefunguje, jak má. Nechci popisovat celý dlouhý skript, snad to bude aspoň trošku pochopitelné:

1) Vytvořím objekt třídy ($o) s nějakými předdefinovanými hodnotami proměnných (definováno ve třídě).
2) Těmto proměnným v tomto objektu přiřadím nové hodnoty, které získám z formuláře ($_GET)
Pomocí foreach je vyplním. Pomocí echo je ověřím - objekt opravdu obsahuje "nové hodnoty".

//book.php
if ($add!='')
  {
  $o = new $object(time());
  foreach ($_GET as $k => $v)
    {
    $o->k = $v;
    echo $o->k . '<br>';
    }

3) Tento objekt uložím do SESSION.

  $o->save();

4) Pomocí níže uvedeného odkazu se přesunu na další stránku,...

 echo "<a href='book.php?id={$o->id}'>rezervovat</a>";
//book.php?id=nejake_cislo
if ($id == '' or $id == FALSE)
  header("location: index.php");

5) na další stránce chci opět vytáhnout dané hodnoty objektu ze SESSION.

$r = Resource::getById($id);
foreach ($r as $ii => $iii)
  {
  echo "$ii => $iii<br>";
  }

6) a objeví se opět původní předdefinované hodnoty, nikoliv ty zadané ve formuláři :-(

//část  definice třídy Resource:
public function save()
  {
  $_SESSION['resource'][$this->id] = $this;
  }
public function getById($id)
  {
  if (array_key_exists($id,$_SESSION['resource']))
    return $_SESSION['resource'][$id];
  else
    return FALSE;
  }

Děkuji.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
které získám z formuláře ($_GET) Data z formuláře se získávají pomocí $_POST. nový
host 24.02.2009 17:33
host
to je pravda, nicméně pokud toho neni moc, tak lze použít i $_GET a já chtěl sledovat pohyb v URL ..… nový
Zajic 24.02.2009 17:55
Zajic
už jsem na to přišel ... :-) 1) oprava 1. části //book.php if ($add!='') { $o = new $object(time()… poslední
Zajic 25.02.2009 07:52
Zajic

už jsem na to přišel ... :-)

1) oprava 1. části

//book.php
if ($add!='')
  {
  $o = new $object(time());
  foreach ($_GET as $k => $v)
    {
    $o->temp[$k] = $v;
    echo "<span class='pismo7_gray'> ",$o->temp[$k]," </span>";   //pomocné zobrazení
    }

5) oprava 5. části

$vypis = Resource::getById($id);
html_start();
foreach ($vypis->temp as $abc)
  {
  echo "<span class='pismo7_gray'> ",$abc," </span>";  //pomocný výpis
  }

Zpět do poradny Odpovědět na původní otázku Nahoru