Fråga : skapa en periodssamling för enkel vagn

Jag vet inte egentligen, om jag har den högra idén här, men jag önskar att lagra användareval i en period.

So, låter något att säga där är 3 objekt. De klickar på en för att finna ut mer om den. Här de kan klicka på tillfogar till vagnen. Tillfoga vagnen som när de klickar på, den måste tillfoga den objektLEGITIMATION till en period. Men därefter, om de tillfogar, ett olikt objekt måste det lagras i den samma perioden? På ögonblicket som tillfoga till vagnen anknyter, använder inte postar men får. Så på vagnssidan jag har det nedanfört, men I-funderare, som, så snart som de klickar på another tillfogar till vagnen, perioden värderar ska ändring.

$_SESSION = $_GET [”DVDID”];
" klar "

Svar : skapa en periodssamling för enkel vagn

Det är mer försvårad, än det verkar som om, så jag har fäst något kodifierar ska gör det (se nedanfört), som en PHP klassificerar. Denna är endast en mycket enkel korg, men den kan lätt fördjupas.

Det är den använda något liknande så

$b = ny myBasket (”basketName”);    // du kan köra flera korgar, precis unikt bruk namnger

$b->addItem ($productCode);  // tillfogar 1 objekt

$b->addItem ($productCode2, 10);   // tillfogar ett antal av 10 för productCode2


Att att visa korgen

$items = $b->fetchAllItems ();
$qty = $b->fetchAllQtys ();

foreach ($items som $index=> $aProductCode) {

     eka ”produkten kodifierar $aProductCode har {$qty [$index]} objekt
”;
}
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
sessName = $name. ”_bskt”;
          $this->sessQty  = $name. ”_qty”;

          $this->initialise ();
     }





     // ----- Privata metoder -------------------------------------------------


     // lager strömsamlingen i en periodsvariabel
     //
     privat fungera updateBasket () {
          $_SESSION [$this->sessName] = sänder som en serie ($this->basket);
          $_SESSION [$this->sessQty]  = sänder som en serie ($this->qty);
     }



     // initialiserar korgen
     //
     privat fungera initialiserar () {

          // kontroll, om perioden är pågående, och om hämta så den existerande korgen
          //
          om (isset ($_SESSION [$this->sessName]) &&isset ($_SESSION [$this->sessQty])) {
               $this->basket = unserialize ($_SESSION [$this->sessName]);
               $this->qty    = unserialize ($_SESSION [$this->sessQty]);
          }
          annars {
               $this->basket = samling ();
               $this->qty    = samling ();
               $this->updateBasket ();
          }

     }



     // ----- Offentliga metoder --------------------------------------------------


     // tömmer korgen ut
     //
     fungera fri () {

          unset ($_SESSION [$this->sessName]);
          unset ($_SESSION [$this->sessQty]);
          $this->initialise ();
     }



     // tillfogar en anmärka till avsluta av lista
     //
     // parametrar: $item - en anmärka som ska lagras
     //             $num - ett antal som ska lagras, standarder till 1
     //
     fungera addItem ($item, $num=1) {
          // ser till att indexstaget kliver in genom att hämta det högst
          // existerande index och öka det
          //
          $ctr = räkning ($this->basket);

          om ($ctr > 0) {
               $lastKey = avslutar (array_keys ($this->qty));
               $ctr = $lastKey + 1;
          }

          $this->basket [$ctr] = $item;
          $this->qty    [$ctr] = $num;

          $this->updateBasket ();
     }



     // tar bort ett objekt från lista - identifiera vid korgen numrerar.
     // NOTERAR DET som TAR BORT ETT OBJEKT, NOLLSTÄLLER INTE KORGEN NUMRERAR i samlingarna.
     //
     // parametrar: $basketNumber - indexet av samlingtillträdeet som ska tas bort från samlingen
     //
     fungera rmvItem ($basketNumber) {

          om (räkning ($this->basket) > 0) {

               // 001 kontroll att ett objekt finns innan det försöker dess borttagning
               //
               om (isset ($this->basket [$basketNumber]  )) {
                    unset ($this->basket [$basketNumber]);
                    unset ($this->qty [$basketNumber]);
                    $this->updateBasket ();
               }
          }
     }



     // Fetch ett objekt
     //
     // parametrar: $basketNumber - indexet av samlingtillträdeet som ska hämtas från samlingen
     //
     fungera fetchItem ($basketNumber) {
          om (räkning ($this->basket) > 0) {
               gå $this->basket [$basketNumber] tillbaka;
          }
     }



     // Fetch per antalet för ett objekt
     //
     // parametrar: $basketNumber - indexet av antalet som ska hämtas från samlingen
     //
     fungera fetchItemQuantityen ($basketNumber) {
          om (räkning ($this->qty) > 0) {
               gå $this->qty [$basketNumber] tillbaka;
          }
     }


     // ändring ett givet objekt i lista
     //
     // parametrar: $basketNumber - indexet av anmärka som ska uppdateras
     //             $anItem - en anmärka
     //
     fungera chgItem ($basketNumber, $anItem) {
          om (räkning för && för $basketNumber->= 0 ($this->basket) > 0) {
               // 001 kontroll att ett objekt finns innan det försöker dess borttagning
               //
               om (isset ($this->basket [$basketNumber]  )) {
                    $this->basket [$basketNumber] = $anItem;
                    $this->updateBasket ();
               }
          }
     }



     // ändring per givet objektantal i lista
     //
     // parametrar: $basketNumber - indexet av anmärka som ska uppdateras
     //             $qty - Det nya antalet
     //
     fungera chgQty ($basketNumber, $qty) {
          om (räkning för && för $basketNumber->= 0 ($this->qty) > 0) {

               // 001 kontroll att ett objekt finns innan det försöker dess borttagning
               //
               om (isset ($this->basket [$basketNumber]  )) {
                    $this->qty [$basketNumber] = $qty;
                    $this->updateBasket ();
               }
          }
     }



     // får en lista allra objekten i korgen
     //
     fungera fetchAllItems () {
          gå $this->basket tillbaka;
     }



     // får en lista allra objektantalet lagrat i korgen
     //
     fungera fetchAllQtys () {
          gå $this->qty tillbaka;
     }



     // går räkningen av numrera av objekt i korgen tillbaka
     //
     fungera countBasket () {
          gå array_sumen ($this->qty) tillbaka;
     }



} // avslutar av klassificerar myBasket
Andra lösningar  
 
programming4us programming4us