Wie könnte ich diese optionen in das Script einbinden das es am Ende im Warenkorb mitangezeigt wird? Dazu müsste ich neue Variablen erstellen und dazugehörige Funktionen oder geht das einfacher?
// Verify the price is numeric
if (is_numeric($price)) {
$validPrice = true;
}
// If decimal quantities are enabled, verify the quantity is a positive float
if ($this->config['decimalQtys'] === true && filter_var($qty, FILTER_VALIDATE_FLOAT) && $qty > 0) {
$validQty = true;
}
// By default, verify the quantity is a positive integer
elseif (filter_var($qty, FILTER_VALIDATE_INT) && $qty > 0) {
$validQty = true;
}
// Add the item
if ($validPrice !== false && $validQty !== false) {
// If the item is already in the cart, increase its quantity
if($this->qtys[$id] > 0) {
$this->qtys[$id] += $qty;
$this->update_subtotal();
}
// This is a new item
else {
$this->items[] = $id;
$this->names[$id] = $name;
$this->prices[$id] = $price;
$this->qtys[$id] = $qty;
$this->urls[$id] = $url;
}
$this->update_subtotal();
return true;
}
elseif ($validPrice !== true) {
$errorType = 'price';
return $errorType;
}
elseif ($validQty !== true) {
$errorType = 'qty';
return $errorType;
}
}
/**
* Update an item in the cart
*
* @param string $id
* @param mixed $qty
*
* @return boolean
*/
private function update_item($id, $qty) {
// If the quantity is zero, no futher validation is required
if ((int) $qty === 0) {
$validQty = true;
}
// If decimal quantities are enabled, verify it's a float
elseif ($this->config['decimalQtys'] === true && filter_var($qty, FILTER_VALIDATE_FLOAT)) {
$validQty = true;
}
// By default, verify the quantity is an integer
elseif (filter_var($qty, FILTER_VALIDATE_INT)) {
$validQty = true;
}
// If it's a valid quantity, remove or update as necessary
if ($validQty === true) {
if($qty < 1) {
$this->remove_item($id);
}
else {
$this->qtys[$id] = $qty;
}
$this->update_subtotal();
return true;
}
}
/* Using post vars to remove items doesn't work because we have to pass the
id of the item to be removed as the value of the button. If using an input
with type submit, all browsers display the item id, instead of allowing for
user-friendly text. If using an input with type image, IE does not submit
the value, only x and y coordinates where button was clicked. Can't use a
hidden input either since the cart form has to encompass all items to
recalculate subtotal when a quantity is changed, which means there are
multiple remove buttons and no way to associate them with the correct
hidden input. */
/**
* Reamove an item from the cart
*
* @param string $id *
*/
private function remove_item($id) {
$tmpItems = array();
// Rebuild the items array, excluding the id we just removed
foreach($this->items as $item) {
if($item != $id) {
$tmpItems[] = $item;
}
}
$this->items = $tmpItems;
$this->update_subtotal();
}
/**
* Update the entire cart
*/
public function update_cart() {
// Post value is an array of all item quantities in the cart
// Treat array as a string for validation
if (is_array($_POST['jcartItemQty'])) {
$qtys = implode($_POST['jcartItemQty']);
}
// If no item ids, the cart is empty
if ($_POST['jcartItemId']) {
$validQtys = false;
// If decimal quantities are enabled, verify the combined string only contain digits and decimal points
if ($this->config['decimalQtys'] === true && preg_match("/^[0-9.]+$/i", $qtys)) {
$validQtys = true;
}
// By default, verify the string only contains integers
elseif (filter_var($qtys, FILTER_VALIDATE_INT) || $qtys == '') {
$validQtys = true;
}
if ($validQtys === true) {
// The item index
$count = 0;
// For each item in the cart, remove or update as necessary
foreach ($_POST['jcartItemId'] as $id) {
// Increment index for the next item
$count++;
}
return true;
}
}
// If no items in the cart, return true to prevent unnecssary error message
elseif (!$_POST['jcartItemId']) {
return true;
}
}
// Use config values as literal indices for incoming POST values
// Values are the HTML name attributes set in config.json
$id = $_POST[$id];
$name = $_POST[$name];
$price = $_POST[$price];
$qty = $_POST[$qty];
$url = $_POST[$url];
// Only generate unique token once per session
if(!$_SESSION['jcartToken']){
$_SESSION['jcartToken'] = md5(session_id() . time() . $_SERVER['HTTP_USER_AGENT']);
}
// If enabled, check submitted token against session token for POST requests
if ($config['csrfToken'] === 'true' && $_POST && $jcartToken != $_SESSION['jcartToken']) {
$errorMessage = 'Invalid token!' . $jcartToken . ' / ' . $_SESSION['jcartToken'];
}
// Sanitize values for output in the browser
$id = filter_var($id, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_LOW);
$name = filter_var($name, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_LOW);
$url = filter_var($url, FILTER_SANITIZE_URL);
// Round the quantity if necessary
if($config['decimalPlaces'] === true) {
$qty = round($qty, $config['decimalPlaces']);
}
// Add an item
if ($_POST[$add]) {
$itemAdded = $this->add_item($id, $name, $price, $qty, $url);
// If not true the add item function returns the error type
if ($itemAdded !== true) {
$errorType = $itemAdded;
switch($errorType) {
case 'qty':
$errorMessage = $config['text']['quantityError'];
break;
case 'price':
$errorMessage = $config['text']['priceError'];
break;
}
}
}
// Update a single item
if ($_POST['jcartUpdate']) {
$itemUpdated = $this->update_item($_POST['itemId'], $_POST['itemQty']);
if ($itemUpdated !== true) {
$errorMessage = $config['text']['quantityError'];
}
}
// Update all items in the cart
if($_POST['jcartUpdateCart'] || $_POST['jcartCheckout']) {
$cartUpdated = $this->update_cart();
if ($cartUpdated !== true) {
$errorMessage = $config['text']['quantityError'];
}
}
// Remove an item
/* After an item is removed, its id stays set in the query string,
preventing the same item from being added back to the cart in
subsequent POST requests. As result, it's not enough to check for
GET before deleting the item, must also check that this isn't a POST
request. */
if($_GET['jcartRemove'] && !$_POST) {
$this->remove_item($_GET['jcartRemove']);
}
// Empty the cart
if($_POST['jcartEmpty']) {
$this->empty_cart();
}
// Determine which text to use for the number of items in the cart
$itemsText = $config['text']['multipleItems'];
if ($this->itemCount == 1) {
$itemsText = $config['text']['singleItem'];
}
// Determine if this is the checkout page
/* First we check the request uri against the config checkout (set when
the visitor first clicks checkout), then check for the hidden input
sent with Ajax request (set when visitor has javascript enabled and
updates an item quantity). */
$isCheckout = strpos(request_uri(), $checkout);
if ($isCheckout !== false || $_REQUEST['jcartIsCheckout'] == 'true') {
$isCheckout = true;
}
else {
$isCheckout = false;
}
// Overwrite the form action to post to gateway.php instead of posting back to checkout page
if ($isCheckout === true) {
// Trim trailing slash if necessary
$path = rtrim($path, '/');
$checkout = $path . '/gateway.php';
}
// Default input type
// Overridden if using button images in config.php
$inputType = 'submit';
// If this error is true the visitor updated the cart from the checkout page using an invalid price format
// Passed as a session var since the checkout page uses a header redirect
// If passed via GET the query string stays set even after subsequent POST requests
if ($_SESSION['quantityError'] === true) {
$errorMessage = $config['text']['quantityError'];
unset($_SESSION['quantityError']);
}
// Set currency symbol based on config currency code
$currencyCode = trim(strtoupper($config['currencyCode']));
switch($currencyCode) {
case 'EUR':
$currencySymbol = '';
break;
case 'GBP':
$currencySymbol = '£';
break;
case 'JPY':
$currencySymbol = '¥';
break;
case 'CHF':
$currencySymbol = 'CHF ';
break;
case 'SEK':
case 'DKK':
case 'NOK':
$currencySymbol = 'Kr ';
break;
case 'PLN':
$currencySymbol = 'zł ';
break;
case 'HUF':
$currencySymbol = 'Ft ';
break;
case 'CZK':
$currencySymbol = 'Kč ';
break;
case 'ILS':
$currencySymbol = '₪ ';
break;
case 'TWD':
$currencySymbol = 'NT$';
break;
case 'THB':
$currencySymbol = '฿';
break;
case 'MYR':
$currencySymbol = 'RM';
break;
case 'PHP':
$currencySymbol = 'Php';
break;
case 'BRL':
$currencySymbol = 'R$';
break;
case 'USD':
default:
$currencySymbol = '€';
break;
}
////////////////////////////////////////////////////////////////////////
// Output the cart
// Return specified number of tabs to improve readability of HTML output
function tab($n) {
$tabs = null;
while ($n > 0) {
$tabs .= "\t";
--$n;
}
return $tabs;
}
// If there's an error message wrap it in some HTML
if ($errorMessage) {
$errorMessage = "<p id='jcart-error'>$errorMessage</p>";
}
// If this is the checkout display the PayPal checkout button
if ($isCheckout === true) {
// Hidden input allows us to determine if we're on the checkout page
// We normally check against request uri but ajax update sets value to relay.php
echo tab(3) . "<input type='hidden' id='jcart-is-checkout' name='jcartIsCheckout' value='true' />\n";
// Path to your jcart files
$config['jcartPath'] = 'jcart/';
// Path to your checkout page
$config['checkoutPath'] = 'checkout.php';
// The HTML name attributes used in your item forms
$config['item']['id'] = 'my-item-id'; // Item id
$config['item']['name'] = 'my-item-name'; // Item name
$config['item']['price'] = 'my-item-price'; // Item price
$config['item']['qty'] = 'my-item-qty'; // Item quantity
$config['item']['url'] = 'my-item-url'; // Item URL (optional)
$config['item']['add'] = 'my-add-button'; // Add to cart button
// Your PayPal secure merchant ID
// Found here: https://www.paypal.com/webapps/customerprofile/summary.view
$config['paypal']['id'] = '';
// Display tooltip after the visitor adds an item to their cart?
$config['tooltip'] = true;
// Allow decimals in item quantities?
$config['decimalQtys'] = false;
// How many decimal places are allowed?
$config['decimalPlaces'] = 1;
// Number format for prices, see: http://php.net/manual/en/function.number-format.php
$config['priceFormat'] = array('decimals' => 2, 'dec_point' => '.', 'thousands_sep' => ',');
// Send visitor to PayPal via HTTPS?
$config['paypal']['https'] = true;
// Use PayPal sandbox?
$config['paypal']['sandbox'] = false;
// The URL a visitor is returned to after completing their PayPal transaction
$config['paypal']['returnUrl'] = '';
// The URL of your PayPal IPN script
$config['paypal']['notifyUrl'] = '';
?>
Config-Loader.php
PHP Code:
<?php
// jCart v1.3
// http://conceptlogic.com/jcart/
// By default, this file returns the $config array for use with PHP scripts
// If requested via Ajax, the array is encoded as JSON and echoed out to the browser
// Use default values for any settings that have been left empty
if (!$config['currencyCode']) $config['currencyCode'] = 'USD';
if (!$config['text']['cartTitle']) $config['text']['cartTitle'] = 'Shopping Cart';
if (!$config['text']['singleItem']) $config['text']['singleItem'] = 'Item';
if (!$config['text']['multipleItems']) $config['text']['multipleItems'] = 'Items';
if (!$config['text']['subtotal']) $config['text']['subtotal'] = 'Subtotal';
if (!$config['text']['update']) $config['text']['update'] = 'update';
if (!$config['text']['checkout']) $config['text']['checkout'] = 'checkout';
if (!$config['text']['checkoutPaypal']) $config['text']['checkoutPaypal'] = 'Checkout with PayPal';
if (!$config['text']['removeLink']) $config['text']['removeLink'] = 'remove';
if (!$config['text']['emptyButton']) $config['text']['emptyButton'] = 'empty';
if (!$config['text']['emptyMessage']) $config['text']['emptyMessage'] = 'Your cart is empty!';
if (!$config['text']['itemAdded']) $config['text']['itemAdded'] = 'Item added!';
if (!$config['text']['priceError']) $config['text']['priceError'] = 'Invalid price format!';
if (!$config['text']['quantityError']) $config['text']['quantityError'] = 'Item quantities must be whole numbers!';
if (!$config['text']['checkoutError']) $config['text']['checkoutError'] = 'Your order could not be processed!';
Dein PHP Skript hat mit dem eigentlichen Warenkorb doch nichts zu tun bis auf die eine Debugausgabe er Config wenn GET Parameter "ajax" mitübergeben wird, oder?
Also prinzipiell fügst du deine Checkboxen zu deinem HTML Formular hinzu.
HTML Code:
<input type="checkbox" name="zutat[zutatenname]">
In deinem PHP Skript wo du die Daten des Formulars entgegen nimmst, greifst du so auf deine Zutaten zu:
[Js] Artikel zum Warenkorb hinzufügen 05/08/2015 - Web Development - 1 Replies Hallou Com,
Ich habe ein kleines Problemchen und zwar habe ich Warenkorb mit HTML, CSS und JS gefunden aber mir fehlt das nötige Wissen dazu wie ich ihn Funktionsfähig machen könnte.
Ich habe eine Speisekarte die auf der selben Page sein soll und von dort aus sollen die Gerichte auch zum Warenkorb hibzugefügt werden. Ich wäre sehr dankbar wenn mir jemand ein Beispielcode für das hinzufügen von 1-2 Artikeln zeigen könnte.
http://http://codepen.io/anon/pen/waMwQp
Problem mit Sessions bei Warenkorb 03/10/2013 - .NET Languages - 1 Replies Erstmal Hallo, undzwar habe ich einen Warenkorb erstellt, leider habe ich das Problem, dass wenn ich auf "in den Warenkorb" klicke die Session und die ID nicht übernommen werden, also es nicht in den Warenkorb kommt. Ich wäre sehr dankbar für jegliche Hilfe hier die Codes:
Ist auf jeder Seite, da hab ich die ID's der Sachen festgelegt und Preise + name als variablen...
<?php
ini_set("session.use_cookies", "0");
ini_set("url_rewriter.tags", "");
session_start();...
Suche auf Facebook Fanpage mit PayPal Warenkorb System 02/18/2012 - elite*gold Trading - 7 Replies Wie oben schon steht suche ich jemanden der mir was machen könnte.
Preis bin bereit bis zu 30 Euro zu bezahlen in E gold,ÜW,PSC und weiteres auf Anfrage.
Preis für max. 25 Produkte die eingefügt werden müßen
Beispiel so
Sabines Schmuck | Facebook
HP/Warenkorb Hilfe! 05/25/2011 - General Coding - 2 Replies Moin Moin,
als erstes hoffe ich das ich in der richtigen Topic bin! :s Wenn nicht sagt bescheid ;)
Also meine eigentliche Frage:
Ich arbeite immoment an einer Homepage für eine Schulaufgabe (Informatik, um genau zusein). Wir sollen einen Online-Pizza-Service Dienst erstellen. Mit Datenbankanschluss und was sonst noch alles dazu gehört. Jedoch habe ich zwei Probleme: das erste ist, dass ich kein Code für einen "Warenkorb" finde (Im Sinne von Online bestellen, also zuerst Sachen dort...