Så kom der et nyt problem op... Efter jeg fik fikset mit design i denne tråd:
http://www.udvikleren.dk/PHP/Thread.aspx/6/28962/Er der kommet et nyt problem op
Min indkøbskurv virker ikke længere...
Jeg har en tabel til min indkøbskurv i databasen hvor produktet bliver tilføjet til når du putter det i indkøbskurven. og den del virker fint nok pånær hver gang du klikker køb bliver der lavet et nyt session id og derved ligger den ikke varen til det der ligger der i forvejen fordi session id ikke er ens.
Som sagt alt virkede fint nok inden jeg ændrede det med doctype... i den anden tråd.
Det skal lige tilføjes at jeg har ændret koden lidt frem tilbage for at få den til at virke, men uden held. lige nu er den sat til bare at tilføje 1 men der er meningen 1 skal erstattes med en session variabel der indeholder antallet du skrev i antals boksen ved siden af køb knappen.
Her har i mine koder.
produkt_visning.php - Det eneste at kikke på her køb knappen går jeg ud fra men nu giver jeg jer al koden for at være sikker.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
<?php
require_once 'include/top.php';
?>
<script type="text/javascript">
function qtyToCart(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser understøtter ikke HTTP Request. Du kan desværre ikke bruge vores design selv side uden at opdatere din browser.");
return;
}
var url="library/qtyIntoCart.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
</script>
<div class="contentLayout">
<div class="content">
<div class="PostContent">
<div class="Block">
<div class="Block-tl"></div>
<div class="Block-tr"></div>
<div class="Block-bl"></div>
<div class="Block-br"></div>
<div class="Block-tc"></div>
<div class="Block-bc"></div>
<div class="Block-cl"></div>
<div class="Block-cr"></div>
<div class="Block-cc"></div>
<div class="Block-body">
<div class="BlockContent">
<div class="BlockContent-body">
<?php
$category = $_GET['c'];
$product = getProductDetail($pdId);
extract($product);
?>
<table class="table" width="100%" border="0">
<td valign="top" width="50%">
<div>
<a href="<?php echo $pd_image; ?>" rel="lightbox[roadtrip]"><img src="<?php echo $pd_image; ?>" width="240px" alt="Produkt billed" border:0" /></a>
</div>
<div>
<h6>Flere billeder:</h6>
</div>
<div>
<?php
(str_word_count($pd_all_image, 1, '0123456789_.'));
$counts = str_word_count($pd_all_image, 0, '0123456789_.');
$picShow = explode(",", $pd_all_image);
$e=$counts - "1";
for ($i=0; $i<=$e; $i++)
{
echo '<a href="images/produkter/' . $picShow[$i] . '" rel="lightbox[roadtrip]"><img src="images/produkter/' . $picShow[$i] . '" width="80px" alt="Produkt billed" border:0" /></a>';
}
?>
</div>
</td>
<td valign="top" width="50%">
<div>
<h2 class="PostHeaderIcon-wrapper"><span class="PostHeader"><?php echo $pd_name; ?></span></h2>
<p><?php echo $pd_description; ?></p>
<br /><br />
<?php
(str_word_count($pd_size, 1, '-'));
$sizecounts = str_word_count($pd_size, 0, '-');
$sizeShow = explode(",", $pd_size);
$e=$sizecounts - "1";
echo '<label for="size">Vælg størrelse her: </label>
<select name="size">';
for ($i=0; $i<=$e; $i++)
{
echo '<option value="' . $sizeShow[$i] . '">' . $sizeShow[$i] . '</option>';
}
echo '</select>';
echo '<br />';
echo '<br />';
(str_word_count($pd_color, 1, ';&'));
$colorcounts = str_word_count($pd_color, 0, ';&');
$colorShow = explode(",", $pd_color);
$e=$colorcounts - "1";
echo '<label for="color">Vælg farve her: </label>
<select name="color">';
for ($i=0; $i<=$e; $i++)
{
echo '<option value="' . $colorShow[$i] . '">' . $colorShow[$i] . '</option>';
}
echo '</select>';
?><br /><br /><br />
<h3>Pris: <?php echo $pd_price; ?> kr.</h3>
<form method="post" action="">
<label for="antal">Antal: </label>
<input type="text" id="qtytocart" name="qtytocart" size="5" value="" onkeyup="txtChange(this.value);" />
<input name="btnContinue" type="submit" id="btnContinue" value="Køb" onClick="window.location.href='<?php echo $cart_url; ?>';">
</form>
</div>
</td>
</table>
</div>
<div></div>
</div>
</div>
<div class="cleared" align="center"><input type="button" value="< < Tilbage til <?php echo $category ?>" onclick="window.location.href='<?php echo $category ?>.php';"></div>
</div>
</div>
<div class="Post">
<div class="Post-body">
<div class="Post-inner">
<div class="cleared"></div>
</div>
</div>
</div>
</div>
<div class="sidebar1">
<?php
require_once 'include/smallcart.php';
?>
<?php
require_once 'include/contact.php';
?>
</div>
</div>
<?PHP
require_once 'include/buttom.php';
?>
top.php og buttom.php som jeg henter ind i dokumentet indeholder dette:
top.php
<?php
require_once 'library/config.php';
require_once 'library/product-functions.php';
require_once 'library/cart-functions.php';
$_SESSION['shop_return_url'] = $_SERVER['REQUEST_URI'];
$pdId = (isset($_GET['p']) && $_GET['p'] != '') ? $_GET['p'] : 0;
// sætter standard titel
$pageTitle = 'AT Design - tekstiltryk, tryksager, klistermærker m.m.';
// Sætter produktnavn til page titel
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$pdId = (int)$_GET['p'];
$sql = "SELECT pd_name
FROM tbl_product
WHERE pd_id = $pdId";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);
$pageTitle = $row['pd_name'];
} else if (isset($_GET['c']) && (int)$_GET['c'] > 0) {
$catId = (int)$_GET['c'];
$sql = "SELECT cat_name
FROM tbl_category
WHERE cat_id = $catId";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);
$pageTitle = $row['cat_name'];
}
?>
<head>
<!-- Created by: Rune Thagaard
Base template (without user's data) checked by http://validator.w3.org : "This page is valid XHTML 1.0 Transitional"
-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta name="description" content="Vi laver næsten alt i reklame!.">
<meta name="keywords" content="klistermærker, tekstiltryk, tekstiltrykkeri, textiltrykkeri, reklametryk, tøjprint, tøjtryk,
transfertryk, arbejdstøj, cap, nøglerem, keyhangers, keyhanger, tshirts, tshirt, skolebluser, skoletrøjer, studietrøjer, kasketter,
logo-tryk, profilbeklædning, profiltæj, reklametryk på tøj, tryk på sweatshirts, tryk på t-shirts, tryk på tøj, t-shirt, t-shirts,
tøjprint, xpresstryk, tryk på tekstiler, plakater, visitkort i plast, plastikkort, textiltryk, tryksager, brevpapir, webdesign,
udstillingssystmer, skilte, storformatprint, bannere, folie, facade, auto, reklame, bagrude, streamer, streamers">
<link rel="icon" href="http://atdesign.dk/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="http://atdesign.dk/favicon.ico" type="image/x-icon" />
<title><?php echo $pageTitle; ?></title>
<script language="JavaScript" type="text/javascript" src="library/common.js"></script>
<script type="text/javascript" src="script.js"></script>
<script language="JavaScript" type="text/javascript" src="library/checkout.js"></script>
<script src="library/prototype.js" type="text/javascript"></script>
<script src="library/scriptaculous.js?load=effects" type="text/javascript"></script>
<script src="library/lightbox.js" type="text/javascript"></script>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<link rel="stylesheet" href="library/lightbox.css" type="text/css" media="screen" />
<!--[if IE 6]><link rel="stylesheet" href="style.ie6.css" type="text/css" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="style.ie7.css" type="text/css" media="screen" /><![endif]-->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9207911-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</head>
<body>
<div class="PageBackgroundGradient"></div>
<div class="PageBackgroundGlare">
<div class="PageBackgroundGlareImage"></div>
</div>
<div class="Main">
<div class="Sheet">
<div class="Sheet-tl"></div>
<div class="Sheet-tr"></div>
<div class="Sheet-bl"></div>
<div class="Sheet-br"></div>
<div class="Sheet-tc"></div>
<div class="Sheet-bc"></div>
<div class="Sheet-cl"></div>
<div class="Sheet-cr"></div>
<div class="Sheet-cc"></div>
<div class="Sheet-body">
<div class="Header">
<div class="Header-png"></div>
<div class="Header-jpeg"></div>
</div>
<?php
require_once 'include/menu.php';
?>
buttom.php
<div class="cleared"></div>
<div class="Footer">
<div class="Footer-inner">
<a href="#" class="rss-tag-icon" title="RSS"></a>
<div class="Footer-text">
<p>Copyright © 2009 AT Design. All Rights Reserved.</p>
</div>
</div>
<div class="Footer-background"></div>
</div>
</div>
</div>
<div class="cleared"></div>
<p class="page-footer"></p>
</div>
</body>
</html>
Når du trykker på køb knappen bliver du sendt til cart.php?action=add&p=X hvor X=vare id.
Det eneste den gør denne gang er ved at køre functionen addToCart da action er add.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
<?php
require_once 'library/config.php';
require_once 'library/cart-functions.php';
$action = (isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view';
switch ($action)
{
case 'add' :
addToCart();
break;
case 'update' :
updateCart();
break;
case 'delete' :
deleteFromCart();
break;
case 'view' :
}
$cartContent = getCartContent();
$numItem = count($cartContent);
$pageTitle = 'Shopping Cart';
// set the default page title
$pageTitle = 'AT Design - tekstiltryk, tryksager, klistermærker m.m.';
// Tjekker om pd_id er sat og sætter
//side titel til produktnavn hvis den er
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$pdId = (int)$_GET['p'];
$sql = "SELECT pd_name
FROM tbl_product
WHERE pd_id = $pdId";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);
$pageTitle = $row['pd_name'];
}
require_once 'include/top.php';
?>
<div class="contentLayout">
<div class="content">
<div class="Post">
<div class="Post-body">
<div class="Post-inner">
<h2 class="PostHeaderIcon-wrapper">
<span class="PostHeader">Indkøbskurv</span>
</h2>
<div class="PostContent">
<?php
// show the error message ( if we have any )
displayError();
if ($numItem > 0 ) {
?>
<form action="<?php echo $_SERVER['PHP_SELF'] . "?action=update"; ?>" method="post" name="frmCart" id="frmCart">
<table width="560" border="1" align="center" cellpadding="5" cellspacing="1" class="entryTable">
<tr class="entryTableHeader">
<td colspan="2" align="center">Produkter</td>
<td width="25" align="center">Stk pris</td>
<td width="32" align="center">Antal</td>
<td width="224" align="center">Total</td>
<td width="87" align="center"> </td>
</tr>
<?php
$subTotal = 0;
for ($i = 0; $i < $numItem; $i++) {
extract($cartContent[$i]);
$productUrl = "produkt_visning.php?p=$pd_id";
$subTotal += $pd_price * $ct_qty;
?>
<tr class="content">
<td width="100" align="center"><a href="<?php echo $productUrl; ?>"><img src="images/produkter/<?php echo $pd_image; ?>" width="100px" border="0"></a></td>
<td width="17"><a href="<?php echo $productUrl; ?>"><?php echo $pd_name; ?></a></td>
<td align="right"><?php echo displayAmount($pd_price); ?></td>
<td width="32">
<input name="txtQty[]" type="text" id="txtQty[]" size="5" value="<?php echo $ct_qty; ?>" class="box" onKeyUp="checkNumber(this);">
<input name="hidCartId[]" type="hidden" value="<?php echo $ct_id; ?>">
<input name="hidProductId[]" type="hidden" value="<?php echo $pd_id; ?>">
</td>
<td align="right"><?php echo displayAmount($pd_price * $ct_qty); ?></td>
<td width="87" align="center">
<input name="btnDelete" type="button" id="btnDelete" value="Slet" onClick="window.location.href='<?php echo $_SERVER['PHP_SELF'] . "?action=delete&cid=$ct_id"; ?>';" class="box">
</td>
</tr>
<?php
}
?>
<tr class="content">
<td colspan="4" align="right">Pris inkl moms</td>
<td align="right"><?php echo displayAmount($subTotal); ?></td>
<td width="87" align="center"> </td>
</tr>
<tr class="content">
<td colspan="4" align="right">Forsendelse </td>
<td align="right"><?php echo displayAmount($shopConfig['shippingCost']); ?></td>
<td width="87" align="center"> </td>
</tr>
<tr class="content">
<td colspan="4" align="right">Total inkl moms</td>
<td align="right"><?php echo displayAmount($subTotal + $shopConfig['shippingCost']); ?></td>
<td width="87" align="center"> </td>
</tr>
<tr class="content">
<td colspan="5" align="right"> </td>
<td width="87" align="center">
<input name="btnUpdate" type="submit" id="btnUpdate" value="Updater kurv" class="box">
</td>
</tr>
</table>
</form>
<?php
} else {
?>
<table width="550" border="0" align="center" cellpadding="10" cellspacing="0">
<tr>
<td>
<p align="center">Din indkøbskurv er tom</p>
<p>Hvis du ikke kan tilføje varer til din indkøbskurv, så tjek venligst at din browser har cookies aktiveret,
og at der ikke er nogle sikkerheds programmer der blokerer for dit Session.
</p>
</td>
</tr>
</table>
<?php
}
$shoppingReturnUrl = isset($_SESSION['shop_return_url']) ? $_SESSION['shop_return_url'] : 'index.php';
?>
<table width="550" border="0" align="center" cellpadding="10" cellspacing="0">
<tr align="center">
<td>
<input name="btnContinue" type="button" id="btnContinue" value="<< Fortsæt med at handle" onClick="window.location.href='<?php echo $_SESSION['CartReturnUrl']; ?>';">
</td>
<?php
if ($numItem > 0) {
?>
<td>
<!-- <input name="btnCheckout" type="button" id="btnCheckout" value="Fortsæt til betaling >>" onClick="window.location.href='checkout.php?step=1';"> -->
<input name="btnCheckout" type="button" id="btnCheckout" value="Fortsæt til betaling >>" onClick="window.location.href='konstruction.php';">
</td>
<?php
}
?>
</tr>
</table>
</div>
<div class="cleared"></div>
</div>
</div>
</div>
<div class="Post">
<div class="Post-body">
<div class="Post-inner">
<div class="cleared"></div>
</div>
</div>
</div>
</div>
<div class="sidebar1">
<?php
require_once 'include/smallcart.php';
?>
<?php
require_once 'include/contact.php';
?>
</div>
</div>
<?PHP
require_once 'include/buttom.php';
?>
Min addToCart function ligger i dette dokument som bliver hentet ind:
cart-functions.php
<?php
require_once 'config.php';
function addToCart()
{
$qtyinsert=$_SESSION['qtyIntoCart'];
// Tjekker produkt id
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$productId = (int)$_GET['p'];
} else {
header('Location: produkt_visning.php');
}
// tjekker efer om produktet eksitere
$sql = "SELECT pd_id
FROM tbl_product
WHERE pd_id = $productId";
$result = dbQuery($sql);
if (dbNumRows($result) != 1) {
// hvis produktet ikke eksistere
header('Location: cart.php');
}
// sætter session id
$sid = session_id();
// Ser efter om produktet er i kurven
$sql = "SELECT pd_id
FROM tbl_cart
WHERE pd_id = $productId AND ct_session_id = '$sid'";
$result = dbQuery($sql);
if (dbNumRows($result) == 0) {
// indsætter produktet i indkøbskurv tabellen
$sql = "INSERT INTO tbl_cart (pd_id, ct_qty, ct_session_id, ct_date)
VALUES ($productId, 1, '$sid', NOW())";
$result = dbQuery($sql);
} else {
// Updaterer indkøbskurven med det nye antal
$sql = "UPDATE tbl_cart
SET ct_qty = ct_qty + 1
WHERE ct_session_id = '$sid' AND pd_id = $productId";
$result = dbQuery($sql);
}
// Sletter gamle indkøbskurve
deleteAbandonedCart();
header('Location: ' . $_SESSION['shop_return_url']);
}
// Henter alle produkter der matcher session id'et
function getCartContent()
{
$cartContent = array();
$sid = session_id();
$sql = "SELECT ct_id, ct.pd_id, ct_qty, pd_name, pd_price, pd_image
FROM tbl_cart ct, tbl_product pd
WHERE ct_session_id = '$sid' AND ct.pd_id = pd.pd_id";
$result = dbQuery($sql);
while ($row = dbFetchAssoc($result))
{
$row['pd_image'] = 'images/produkter/' . $row['pd_image'];
$cartContent[] = $row;
}
return $cartContent;
}
// Sletter et produkt fra kurven
function deleteFromCart($cartId = 0)
{
if (!$cartId && isset($_GET['cid']) && (int)$_GET['cid'] > 0) {
$cartId = (int)$_GET['cid'];
}
if ($cartId) {
$sql = "DELETE FROM tbl_cart
WHERE ct_id = $cartId";
$result = dbQuery($sql);
}
header('Location: index.php');
}
// Updatere antal i kurven
function updateCart()
{
$cartId = $_POST['hidCartId'];
$productId = $_POST['hidProductId'];
$itemQty = $_POST['txtQty'];
$numItem = count($itemQty);
$numDeleted = 0;
$notice = '';
if ($numDeleted == $numItem) {
// Hvis alle vare er slettet fra kurven
// Gå tilbage til sidst besøgte side
header("Location: $returnUrl" . $_SESSION['shop_return_url']);
} else
{
header('Location: index.php');
}
exit;
}
function isCartEmpty()
{
$isEmpty = false;
$sid = session_id();
$sql = "SELECT ct_id
FROM tbl_cart ct
WHERE ct_session_id = '$sid'";
$result = dbQuery($sql);
if (dbNumRows($result) == 0) {
$isEmpty = true;
}
return $isEmpty;
}
// Sletter alle indkøbskurve der er ældre end 1 dag
function deleteAbandonedCart()
{
$yesterday = date('Y-m-d H:i:s', mktime(0,0,0, date('m'), date('d') - 1, date('Y')));
$sql = "DELETE FROM tbl_cart
WHERE ct_date < '$yesterday'";
dbQuery($sql);
}
?>
Sig endelig til hvis i vil have flere koder.
Jeg vil være jer evigt taknemlig for at hjælpe mig med dette da jeg ikke rigtig kan komme nogle vejne inden det her virker igen.