Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Puste obiekty i sesja, czyli skad skrypt ma wiedziec kiedy wykonac unset()?
Edpl
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

Ostrzeżenie: (0%)
-----


Witam,
pisze koszyk internetowy na podstawie klasy podpatrzonej gdzies w necie (nie pamietam juz mozliwe cos zmienialem). Jednak mam problem z usuwaniem ostatnich elementow. Jesli np w koszyku zostaly 2 sztuki jakiegos produktu i chce sie je usunac... w tym momencie poprawnie wypisuje ze usunieto, koszyk nie wyswietla zawartosci, ale po przeladowaniu znowu te 2 sztuki sie pojawiaja (tak jakby zmiany nie byly wprowadzone do zmiennej sesyjnej). Probowalem wiec uzyc unset gdy obiekt jest pusty... ale cos niebardzo chce dzialac. Poradzcie cos. Zamieszczam skrypt:
  1. // fragment index.php:
  2. <? if (isset($_SESSION[cart])){
  3. $take=unserialize($_SESSION[cart]); }
  4. else
  5. {
  6. $take=new cart; 
  7.  }
  8.  if ($_GET[page]=='cart') { include('cart.php');}
  9. ?>
  10. //a tu cart.php
  11. <?
  12. function showall(cart $take){
  13. while ( list($ky,$vl) = each($take->goods)){
  14. $dbase=new database;
  15. $wynik=$dbase->search('id',$klucz); //od tego momentu $wynik jest obiektem. wlasciwosci wyciagniete z bazy danych na p
  16. dstawie id3
  17. $klucz=$wynik->name;
  18. echo "nazwa:$ky - ilosc:$vl<br>";
  19. unset($wynik);
  20. $_SESSION[cart]=serialize($take);
  21. if (empty($take)) {
  22. unset($_SESSION[cart]);
  23. unset($take); 
  24. }
  25. }
  26. }
  27.  
  28. switch ($_GET[action]) {
  29. case 'add':
  30. if(isset($_GET[id]) && isset($_GET[amount])){
  31. $take->add($_GET[id],$_GET[amount]);
  32.  
  33. echo "added<br><br>";
  34. showall($take);
  35. }
  36. else
  37. {
  38. echo "Error";
  39. }
  40. break;
  41. case 'del':
  42. if(isset($_GET[id]) && isset($_GET[amount])){
  43. $take->del($_GET[id],$_GET[amount]);
  44.  
  45. echo "deleted";
  46. showall($take);
  47. }
  48. else
  49. {
  50. echo "Error";
  51. }
  52. break;
  53. default:
  54. showall($take);
  55. break;
  56. }
  57.  
  58. ?>
  59. //klasa cart:
  60. <?
  61. class cart {
  62.  
  63. public $goods = array();
  64.  
  65. function add($id, $amount) {
  66. $this->goods[$id] += $amount;
  67. }
  68. function del($id, $amount) {
  69.  if ($this->goods[$id] > $amount) {
  70. $this->goods[$id] -= $amount;
  71. return true;
  72. } 
  73. elseif ($this->goods[$id] == $amount) {
  74. unset($this->goods[$id]);
  75. return true;
  76. } 
  77. else {
  78. return false;
  79. }
  80. }
  81. }
  82. ?>


Ten post edytował Edpl 6.08.2008, 08:03:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
php1983
post
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 3.08.2008
Skąd: Radom

Ostrzeżenie: (0%)
-----


Napisałbym sobie plugina do eclipse, ale PDE jest nawet spoko, pozatym nie znam Javy, chociarz, kiedyś w MSDNie, apropo ActiveX wyczytałem, że jawa ma GC. Jeśli jest coś podobnego w php to byloby miło. Pozatym pytanie, czy obiekt może się w kostruktorze unicestwić z użyciem tego php gc?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:23