Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak przerobić koszyk??
marekk
post 8.06.2004, 12:11:11
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.
Go to the top of the page
+Quote Post
Puciek
post 8.06.2004, 13:11:33
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%)
XX---


UŻYWAJ BBCODE !


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post
MaxRipper
post 10.06.2004, 12:03:24
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?
Go to the top of the page
+Quote Post
MaxRipper
post 10.06.2004, 17:01:00
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ć?
Go to the top of the page
+Quote Post
marekk
post 12.06.2004, 12:54:32
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?
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:19