![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 27.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam gotowy koszyk i wszystko odziała ok. ale jest to standardowy koszyk zamówieniowy (dostepny zreszta w roznych miejscach w sieci) tzn. w klasie koszyk przechowywane są tylko jakby 2 zmienne: id produktu i ilość zamówionego produktu. Ponizej schemat: [php:1:b5544950b3]<?php class koszyk { var $zawartosc; function dodaj($element, $ilosc) { $this->zawartosc[$element] += $ilosc; } function liczba($element, $ilosc) { if (0 < $ilosc) $this->zawartosc[$element] = $ilosc; else $this->zawartosc[$element] = 0; } function usun($element) { $this->zawartosc[$element] = 0; } function stan() { return $this->zawartosc; } } session_start(); if (!$koszyk) $koszyk = new koszyk; if ($dod) $koszyk->dodaj($dod,1); if($poz) while ($a=each($poz)) { $koszyk->liczba($a[0],$a[1]); } session_register("koszyk"); ... ?> i przeliczanie: <? ... $stan = $koszyk->stan(); $suma=0; if ($stan) while (list($key, $value) = each($stan)) { echo $key." - ".$value; } ... ?>[/php:1:b5544950b3] Mam pytanie - nie znalazłem tego nigdzie na forum (zreszta nie tylko na forum) - jak przerobic ten koszyk i przeliczanie abym mógł pamiętać przy kazdym zamówionym produkcie jeszcze 2 zmienne, np. rozmiar i kolor?? Rozmiar i kolor będa wybierane indywidualnie przy kazdym produkcie z roletki bądz wpisywane w pole tekstowe. |
|
|
![]()
Post
#2
|
|
![]() TAO programowania Grupa: Zarejestrowani Postów: 340 Pomógł: 3 Dołączył: 25.03.2003 Skąd: ze słoika Ostrzeżenie: (30%) ![]() ![]() |
UŻYWAJ BBCODE !
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 19.08.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
No wlaśnie jak dodac np. trzecia zmienna oprocz id i ilości. Ja np kombinuje i mi nie wychodzi. Otóz podczas dodawania produktu mam dwa pola hidden - w jednym jest id produktu, a w drugim jego numer katalogowy (może to byc tez kolor, badz rozmiar). Wyglada to mniej wiecej tak:
Formularz dodawania produktu: [php:1:46f7447a28]<?php echo "<form name="formnormal" method="post" action="index.php?show=koszyk&menu=dodaj&".SESID.""> <input type="hidden" name="spid" value="".$wiersz['id'].""> // hiden z id produktu <input type="hidden" name="spoid" value="$odcien_numer[$i]"> // hidden z kolorem <center><input name="submitkoszyk" type="submit" value="Kup teraz" style="background: $bgcolor1;"></center></form>"; ?>[/php:1:46f7447a28] Po wyslaniu formularza dane powinny byc dodane do koszyka a wiec: [php:1:46f7447a28]<?php @session_register("koszyk"); if ($menu != "usun_kosz") { $koszyk = $_SESSION["koszyk"]; $id = $_POST["spid"]; $onr = $_POST["spoid"]; if ($_POST["ilosc"] == "") { $ilosc = 1; } else { $ilosc = $_POST["ilosc"]; } if ($show == "koszyk") { if ($menu == "dodaj") { $stara_ilosc = $koszyk[$id]; $koszyk[$id] = $ilosc + $stara_ilosc; $odcien .= $koszyk[$id]; // Tu coś kombinwalem :/ $odcien .= $onr; } // itd.. ?>[/php:1:46f7447a28] Po dodaniu powinny byc wyświetlone: [php:1:46f7447a28]<?php foreach($koszyk as $id => $ilosc) { $count = 0; $zapytanie = "SELECT nazwa, id, cena, promocja FROM produkty WHERE id='$id' "; $wykonaj = mysql_query ($zapytanie); $wiersz = mysql_fetch_array ($wykonaj); if ($wiersz['promocja'] == NULL) { $fltPrice = "".$wiersz['cena'].""; } else { $fltPrice = "".$wiersz['promocja'].""; } $arrProducts[$count++]['overall_price'] = $ilosc * $fltPrice; echo "<a href="index.php?show=produkty&id=$id&".SESID."">".$wiersz['nazwa']."</a><br> x ".$ilosc." szt. (".$arrProducts['0']['overall_price']." PLN)<br>$odcien"; // tu nie wyswietla mi odcieniu $fltOverall_price += $ilosc * $fltPrice; } echo "==============<br> <div align=right>Suma: $fltOverall_price PLN</div>"; ?>[/php:1:46f7447a28] Pytanie jak zrobić aby dodac jeszce jedną zmiena do sesji koszyka - zmienna $odcien? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 19.08.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Znalazlem źródlo problemu - jednak nadal nie umiem go rozwiazać.
Otoz nadal nie moge umieścić zmiennej z pola formularza hidden (o nazwie - 'spoid') w koszyku. Przypominam że zmienna $spoid zawiera dane odnośnie koloru produktu np. $spoid="czarny";. W samym koszyku zauwazylem pewną prawidlowość otóż - przy wyświetlaniu produktow dodanych do koszyka uzywam funkcji: [php:1:b8e784f102] foreach($koszyk as $id => $ilosc) {}[/php:1:b8e784f102] Prawidlowością ktorą zauwazylem jest to że w tej funkcji moge operowac tylko zmiennymi w nią wpisanymi ($koszyk as $id => $ilosc), problem polega na tym ze nie moge umieścic jeszcze jednej zmiennej ($spoid) - rozwiazaloby to moj problem. Może ktos jednak wie jak to zrobić? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 27.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
Hehe widzisz mamy dokładnie ten sam problem (tylko na innych przykładach), ja niestety nie wiem nadal jak go rozwiązać, próbowałem pododawać do tych standardowych funkcji koszyka dalsze zmienne np. dodaj($element, $cecha1, $ilosc) itp. i pozniej w koszyku przekliczac wg. 3 wartosci while (list($key, $wart, $value) = each($stan)) ... ale to też jakos nie działa poprawnie.
Wpadłem z kumplem co prawda na pewien inny pomysł aby jako $value czyli liczbe zamowionych pozycji traktowac jakis ciąg kilku zmiennych np. 010305 gdzie ostatnia wartosc po 0 to byłoby to własciwe $value a wczensiejsze np. kolor i rozmiar (ktore chce wlasnie uzyskac). Ale jeszcze tego nie realizowałem bo tak mysle, ze powinno byc jakies prostrze i bardziej naturalne ropzwiązanie. Czy naprawde nikt nie przerabiał koszyka z kilkoma zmieniającymi sie zmiennymi? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:19 |