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%)
-----


Widze, że ten temat odbiegł na bok. Bardzo mi zależy żeby dowiedzieć się jak niszczyć obiekty. Jak pisałem na początku tematu, chyba drugi post, unset niedziała. Czy może mi ktoś pomóc?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 02:12