Shopping Cart Help
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.Elore is koszonok minden segitseget.
Udv.: Richie
■ 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();
?>
Udv.: Richie
Bonyolult
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.)
Koszi a valaszod..
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..
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
Ezt meg emesztenem kell.. tul bonyolultnak tunik nekem hirtelen..
Nah, ezt azota sem sikerult megoldanom. :(
A left join nem problema, tablazat nem problema, egyszeruen ezek az array()-ok nekem nem mennek..
Szerintem válassz egy
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.
Koszi a valaszt..
Innen szereztem a tutorialt:
Idő
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.
Szóval meg kell oldanod. Házi
Mégis miért tennék jót veled, ha megcsinálnám helyetted? Mit vársz tőlem?
Hello ismet
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.
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.
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
Mást
Hát te nagyon el vagy
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.
Egyetértek a leírtakkal.
+1
É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.
Az ilyen proghúról szabadult,
Mióta itt vagy, még nem
--------
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!
[OFF]Nincs harag. Igaz, hogy
Egyébként, ha ez nekem szólt, miből jött le az anyanyelv meggyalázása? Talán kriszrapra gondoltál?
[/OFF]
Mondtam én, hogy hajlamos
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
Az egyik fiú gyereket
Ez rossz hozzáállás, mivel
Valaki elmagyarázná?
Vagy meghülyültem?!
Bocs, csak miután
OK, semmi gond