ugrás a tartalomhoz

Shopping Cart Help

richierich · 2013. Júl. 17. (Sze), 18.21
Sziasztok,

Egy tutorial alapjan keszitettem egy shopping cart-ot, ami mukodik tokeletesen, egy problemam van, hogy nem tudok plus funkciot hozza adni.

A shopping cart egy Italian etteremhez fog tartozni. Tokeletesen kosarba tudom tenni a termekeket, majd fizettetni blabla..

Az en elakadasom:
Kilistazom a tesztakat "add button"-al, de nekem az is kell, hogy mindegyik teszta etelhez tartozon egy "radio" vagy "checkbox" lehetoseg "add chicken X osszeg", es ha vevo jeloli, akkor az bekeruljon a kosarba, de csak a valasztott teszta etelhez.

Pl:
Pomodorro x1 £10.00
Alla'Italiana x1 £11.00
add chicken x1 £1.50
Gorgonzola x2 £22.00
add chicken x1 £1.50

Ha nezed a listat feljebb, akkor lathatod, hogy peldaul "Gorgonzola" 2x valasztva, de csak egyikhez kernek chicken-t.

Ezt nem tudom, hogyan kivitelezni, tudnatok ebben a segitsegemre lenni?

Alabbi code all rendelkezesemre.
<?
ob_start();
session_start();
include('connect.php');
 
 
// add item(s) shopping cart
 
if (isset($_POST['product_id'])) {
        $pid = $_POST['product_id'];
        $wasFound = false;
        $i = 0;
 
        if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
        $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "quantity" => 1, "quantity" => 1));
        }
        else {
        foreach ($_SESSION["cart_array"] as $each_item) {
        $i++;
        while (list($key, $value) = each($each_item)) {
                if ($key == "item_id" && $value == $pid) {
                array_splice($_SESSION["cart_array"], $i-1,1,array(array("item_id" => $pid, "quantity" => $each_item['quantity']+1)));
                $wasFound = true;
                                }
                        }
                }
                if ($wasFound == false) {
                array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1));
                }
        }
}
// empty shopping cart
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") {
        unset($_SESSION["cart_array"]);
}
 
// remove item(s) shopping cart
if (isset($_POST["index_to_remove"])&& $_POST["index_to_remove"]!="") {
 
        $key_to_remove = $_POST["index_to_remove"];
        if(count($_SESSION["cart_array"]) <= 1) {
                unset($_SESSION["cart_array"]);
                }
        else {
                unset($_SESSION["cart_array"]["$key_to_remove"]);
                sort($_SESSION["cart_array"]);
                }
}
 
// render shopping cart
$cartOutput = "";
$cartTotal = "";
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
        $cartOutput = "Your order cart is empty";
        }
        else {
        $i = 0;
        foreach($_SESSION["cart_array"] as $each_item) {
         
        $item_id = $each_item['item_id'];
        $sql= mysql_query("SELECT * FROM `product` WHERE `item_id`='$item_id' LIMIT 1");
                while ($row = mysql_fetch_array($sql)) {        
                $item_name = $row["item"];
                $item_price = $row["price"];
                $item_plus = $row["plus"];
                $item_price2 = $row["price2"];                
                $item_category = $row["category"];
 
        }
        $price = $item_price * $each_item['quantity'];
        $cartTotal = $price + $cartTotal;
        $cartOutput.= '<table width="229" cellspacing="0" cellpadding="0"><tr>';
        $cartOutput.= '<td  width="150" align="left">('.$item_category.') '.$item_name.'</td>';
        $cartOutput.= '<td align="right"   width="20">x'.$each_item["quantity"].'</td>';
        $cartOutput.= '<td  align="right">£'.$english_format_number = number_format($price, 2, ".", "").'</td>';
        $cartOutput.= '<td align="right"><form action="?p=cart" method="post"><input type="submit" name="deleteBtn'.$item_id.'" class="remove" value="x">';
        $cartOutput.= '<input type="hidden" name="index_to_remove" value="'.$i.'"></form></td></tr></table>';
                $i++;        
                }
 
         
        }
         
        echo $cartOutput;
        //echo "<table width="229"><tr><td align="center"><a href="?p=cart&cmd=emptycart">Empty Cart</a></td></tr></table>";                
        echo $english_format_number = number_format($cartTotal, 2, '.', '');
         
 
ob_end_flush();        
?>
Elore is koszonok minden segitseget.

Udv.: Richie
 
1

Bonyolult

Poetro · 2013. Júl. 17. (Sze), 18.34
A fenti megvalósítása elég bonyolult, ugyanis módosítani kell az adatstruktúrádat. Azaz valahogy fel kell sorolni a választható és választott tulajdonságokat, és azokat el is kell tárolni (mondjuk a elemében). Természetesen validálni is kell, hogy az adott tulajdonság tartozhat-e az elemhez, és amennyiben ki van választva, az módosítja-e az árat.

Meg van itt még pár buktató. Mondjuk én kérek két azonos pizzát. Az egyiket extra sajttal, a másikat pedig baconnel. Ezt hogyan kezelnéd le? Ugye nem egy jönne extra sajttal és baconnel, a másik meg minden extra nélkül? És ha mégis minden extrát az egyikre kérem, akkor azt hogy kezeled? Szóval az, hogy te letöltöttél egy igazából alapszintű munkamenet kezelőt nem jutottál sehova, mert ennél sokkal összetettebb a probléma, és több fejlesztési időt kell beleölnöd. (vagy használsz egy már kész megoldást, vannak pénzért megvehető, illetve igénybe vehető termékek szolgáltatások erre.)
2

Koszi a valaszod..

richierich · 2013. Júl. 17. (Sze), 19.31
Szia, koszi a valaszod, de nem talaltam jobb letoltheto/tutorialt.. Egyszeruen fellelni a neten tutorialt, csak a szimpla shopping cart-ra lehet, sehol nem lattam bovitett megoldast...

Egy masik forumra is irtam 1 hete, es ez a valasz erkezett, ami nekem kicsit kinai, de hatha segitseget jelenthet valakinek ertelmezni, ezaltal segiteni nekem..

Hello!
csinálj egy rendelést és ahhoz kapcsolj hozzá egy rendelés elemei táblát.
mondjuk csinálsz egy táblát ,hogy tmp_cart meg tmp_cart_item

tmp_cart
session_azon|tetel_szamlalo|termek_id|termek_ar
session_azon|1|Alla'Italia|11|
session_azon|2|gorgonzola |22|
session_azon|3|Alla'Italia|11|

tmp_cart_item
session_azon|tetel_szamlalo (a tmp_cartbol kapja)|ar|darab
session_azon|3|Chicken|1.50|1x
session_azon|2|Cheese |1.00|5x


En
Ezt meg emesztenem kell.. tul bonyolultnak tunik nekem hirtelen..



nem egy táblába rakod a megrendelést hanem kettőbe :) mit kell ezen emészteni ? összekötöd a két táblát egy left joinal és összeadsz meg szorzol. igazából sokféle megoldás van ,de szerintem ez a legegyszerűbb és legátláthatóbb.


Nah, ezt azota sem sikerult megoldanom. :(

A left join nem problema, tablazat nem problema, egyszeruen ezek az array()-ok nekem nem mennek..
3

Szerintem válassz egy

bamegakapa · 2013. Júl. 17. (Sze), 21.31
Szerintem válassz egy egyszerűbb feladatot. Majd idővel biztos ez is sikerülni fog, ha kicsit több tapasztalatot szerzel.

A tutorial meg elég régi lehet, a mysql_ függvényeket ma már nem tanácsos használni, ha már úgyis tanulod a dolgokat, inkább fordulj a mysqli/PDO páros valamelyikéhez.
4

Koszi a valaszt..

richierich · 2013. Júl. 17. (Sze), 21.49
Szia, es koszi a valaszt.. sokat nem segitett, de attol meg teny marad, hogy megkell oldanom ezt a kerdest..(ha van gyakorlatom, ha nincs)

Innen szereztem a tutorialt:
http://www.developphp.com
Amugy egy szimla kerdes: ha tudod a valaszt, es a megoldast, akkor miert nem segitesz? :)
5

Idő

Poetro · 2013. Júl. 17. (Sze), 22.51
Amugy egy szimla kerdes: ha tudod a valaszt, es a megoldast, akkor miert nem segitesz? :)

Mert egy ilyen komolyabb rendszert lefejleszteni nem 5-10 perc, hanem napok, hetek kérdése.

Egyébként, ha nem megy a programozás, aminek az egyik legalapabb része a tömbök kezelése, akkor miért nem veszel igénybe olyan szolgáltatást, mint a shopify, Squarespace, LemonStand, vagy választasz egy nyílt forráskódút.
6

Szóval meg kell oldanod. Házi

bamegakapa · 2013. Júl. 17. (Sze), 22.55
Szóval meg kell oldanod. Házi feladat vagy munka, amit elvállaltál, úgy, hogy nem is értesz hozzá? Akkor oldd meg, vagy tegyél fel olyan kérdéseket, amiből az jön le, hogy legalább fogalmad van az egészről.

Mégis miért tennék jót veled, ha megcsinálnám helyetted? Mit vársz tőlem?
7

Hello ismet

richierich · 2013. Júl. 17. (Sze), 23.21
Eloszor is a sajat ettermemrol van szo!
Van fogalmam az egeszrol.. ezert is lepett meg, az elobbi hozzaszolas "hetekig" tart. Szerintem meg lehet oldani pillanatok alatt, ha valaki atlatja.. En nem latom at, ezert is kertem segitseget.

Mit vársz tőlem?


Nem varok toled az eg vilagon semmit, ahogy a kritikat sem vartam toled az elso uzidben, egyszeruen csak nem kellett volna semmit irnod, ha nem vagy hajlando segiteni.

Mégis miért tennék jót veled, ha megcsinálnám helyetted?


15 eve nem elek Mo-n, es ahogy latom, azert is tart az orszag ott ahol van, mert az emberek igy allnak a dolgokhoz.. Nem kertem hogy csinald meg helyettem, en csak egy loketett kertem toletek..(de csak negativum jott)

De ezt be is fejezem itt.. beirtam egy amerikai forum-ba is 3 oraja, es mar valaki meg is oldotta.. (ennyit a hetekrol/honapokrol)

Koszonok minden kommentet!
Udv.: Richie
8

Mást

Poetro · 2013. Júl. 17. (Sze), 23.50
Akkor lehet, hogy mást kérdeztél, vagy máshogy kérdezted. Mindenesetre amit írtál az nem volt egyértelmű. Sem a tekintetében, hogy milyen választ vársz, sem abban, hogy te meddig jutottál a megoldásban.
9

Hát te nagyon el vagy

bamegakapa · 2013. Júl. 18. (Cs), 09.25
Hát te nagyon el vagy tájolva. Sajnálom, hogy nekem kell elmondanom neked: nem értesz hozzá. Amivel nincs gond, csak ha mellé még az arcod is nagy, akkor esélyed sincs fejlődni.

Azt kérted, hogy csináljuk meg, mivel nem közölted, hol akadtál el, csak annyit, hogy nem érted az array-eket (ha elmagyarázod, mivel van problémád az array-eknél, biztos szívesen segítenek itt sokan, köztük én is). Le volt írva egy megoldási lehetőség, azzal kapcsolatban sem kérdeztél. A tanácsainkat nem vetted figyelembe, neked a kód kellett. Nem löketre volt szükséged, hanem arra, hogy egy amerikai fórumon valaki megoldja helyetted.

Magam is számtalanszor segítettem nemzetközi fórumokon embereken, időről-időre mindig feltűnnek az ilyen általam kódvámpírnak nevezett lények, akik nem segítséget akarnak, hanem követelik az ingyen munkát. Aztán beszólogatnak, ha nem kapják meg. Azért tudnak létezni, mert mindig találnak valakit, aki tévesen értelmezi a segítségnyújtás fogalmát és megcsinálja helyettük.

Nem érdekel, hol élsz, mert nem számít semmit. Sajnos azt a mentalitást vitted magaddal, ami itt is gondot jelent: 1. Legyen meg lehetőleg ingyen, mindegy milyen minőségben, de ingyen 2. Mindenki más hülye, nekem senki ne pofázzon 3. "Működjön", a többi meg hótmindegy. Ha bárki kritizálni mer, akkor persze jön a mantra: ezért tartotok itt, e!

Ha bemegyek a pizzériádba (honnan tudod, hogy Magyarországon élek?), és elpanaszolom, hogy hát letöltöttem egy pizzareceptet, de sehogy sem tudom megsütni, csinálsz nekem ingyen pizzát? Kidobsz a boltodból, ha beszólok, amennyiben mégsem?

Ettől függetlenül nem haragszom rád. 5% esélyt láttam rá, hogy hátha elgondolkozol rajta, nem pedig a felmenőimet kezded szídni, ezért megírtam. Legyen sikeres a pizzériád. Azért az alapanyagokra ne sajnáld a pénzt, ha már a webfejlesztőre sajnáltad.
10

Egyetértek a leírtakkal.

Hidvégi Gábor · 2013. Júl. 18. (Cs), 09.38
Egyetértek a leírtakkal.
11

+1

Pepita · 2013. Júl. 18. (Cs), 13.00
Ritkán egyezik a véleményünk, de ebben nagyon.
És én köszönöm neked, hogy volt időd, türelmed ezt leírni neki, remélem, hogy ha rá nem is (mert nem néz vissza), de legalább más hasonlóakra hatni fog.

Ádám, itt javasolnám, hogy ezt a topicot linkeld be légyszíves egy olyan helyen, ami "rólunk" szól. Nem ártana valami gyűjteményt csinálni, nem csak szakmai, hanem (inkább) erkölcsi haszna lenne.
12

Az ilyen proghúról szabadult,

hunkris · 2013. Júl. 18. (Cs), 17.43
Az ilyen proghúról szabadult, értelmetlen objektumokat miért tűri el a tisztelt moderátor csapat? Nem egyszerűbb kitiltani őket, ahelyett, hogy időt pocsékoltok arra, hogy a nagyképű beszólogatásaikra válaszoltok?
13

Mióta itt vagy, még nem

H.Z. · 2013. Júl. 18. (Cs), 17.57
Mióta itt vagy, még nem láttam tőled fejlődést. Semmiben. Ha édes anyanyelvünk rendszeres meggyalázásától el is tekintek, még akkor is ott van, hogy ugyanazon a szinten mozogsz, ahol akkor voltál, mikor először megjelentél itt. Mégis mit vársz?

--------
Ja, bocs, most látom, hogy nem rólad volt szó... Hmmmm... pedig esküdni mertem volna, hogy fentebb téged kritizáltak és felkaptad a vizet. :)

ui: ha rosszul emlékszem a hivatkozott hozzászóló életútjára, akkor tényleg elnézést kérek, nem ez lenne az első eset, hogy két usert összekeverek!
14

[OFF]Nincs harag. Igaz, hogy

hunkris · 2013. Júl. 18. (Cs), 18.24
[OFF]Nincs harag. Igaz, hogy néha nehezen értetem meg magam (vagy simán hülyeséget beszélek), és ebből viták születtek, de próbálok az itteni normáknak megfelelni.

Egyébként, ha ez nekem szólt, miből jött le az anyanyelv meggyalázása? Talán kriszrapra gondoltál?

[/OFF]
15

Mondtam én, hogy hajlamos

H.Z. · 2013. Júl. 18. (Cs), 18.40
Mondtam én, hogy hajlamos vagyok keverni a neveket...
Igen, vele kevertelek össze. :)
Na, mindegy, per pill. kissé zombi módban vagyok, szóval nem csodálkozni semmin! ;)

---
Ennél már csak az volt szebb (szintén "krisz" témában...), amivel ma találkoztam az Állatkert előtt és -ben. Egy család két-három gyerekkel. Az egyik fiú gyereket következetesen Krisztinek szólította anyukája... :D
16

Az egyik fiú gyereket

Hidvégi Gábor · 2013. Júl. 18. (Cs), 19.02
Az egyik fiú gyereket következetesen Krisztinek szólította anyukája.
Biztos úgy van vele, hogy a gyerek joga eldönteni, milyen nemű.
17

Ez rossz hozzáállás, mivel

hunkris · 2013. Júl. 18. (Cs), 19.14
Ez rossz hozzáállás, mivel manapság sok (hímnemű) gyerek visszaél vele.
18

Valaki elmagyarázná?

Pepita · 2013. Júl. 19. (P), 01.54
Nekem is már ködölt a látásom, de tök nem tudom, hogy ki szabadult a proghuról, miért én kaptam válaszként, most mi a túró van itt?!
Vagy meghülyültem?!
19

Bocs, csak miután

hunkris · 2013. Júl. 19. (P), 09.16
Bocs, csak miután végigolvastam a témát, a válasz gomb állt kézre. Természetesen nem rád gondoltam, hanem a témanyitóra.
20

OK, semmi gond

Pepita · 2013. Júl. 20. (Szo), 19.35
Köszi, most kicsit kevésbé fáradtan - és segítséggel - le tudtam követni... :)