Hi,
FIRST: Would it be better to use sessions to store shopping cart information, or would it be better to store them into the database when a product is added to the cart? Or is one not better than the other?
Can someone point me in the right direction, on how I add more data to the session set, or pass a new session to the cart I am trying to build.
Currently, I am letting the user click a form submit button and pass the data via $_POST.
I then get the produkt_id from the $_POST - And get the relevant data to display in the shopping cart. - So far so good..
Then I also need to pass on the size, which is from a different table, and I get the size from a select list which is also in the form.
So far I can add products, get the information - because the information is all in the same table. But how do I save the sizes in a session too, and add that to the cart (Sizes are stored in another table, and have produkt_id in commen).
For getting the information without the sizes i have this:
// Add to cart:
if (isset($_POST['kom_i_kurv'])) // START SHOPPING CART:
{
// HAS A SIZE BEEN CHOSEN ($STR = Size):
$str = mysqli_real_escape_string($connection,$_POST['sizes']);
$produkt_id_til_kurv = mysqli_real_escape_string($connection, $_POST['produkt_id']);
// Valider:
if ($str == 'nej')
{
$error_class = 'class="kom_i_kurv_fejl"';
}
else
{
if (empty($error_class))
{
// Tjeck how many products are in stock, and dont allow to add more than that:
$quantity = mysqli_query($connection, "
SELECT produkt_id, stock FROM products WHERE produkt_id = '".(int)$produkt_id_til_kurv."'");
while ($quantity_row = mysqli_fetch_assoc($quantity))
{
if ($quantity_row['stock'] != $_SESSION['cart_'.$produkt_id_til_kurv])
// UNIQUE PRODUKT ID.
{
// ADD PRODUCT IF THERE IS MORE IN STOCK.
$_SESSION['cart_'.(int)$produkt_id_til_kurv] += '1';
}
else echo '<p>Der er desværre ikke flere på lager i øjeblikket!</p>';
}
}
}
}
This lets me add the products as long as there are any on stock.
But how do I also pass in the sizes kept in the variabel: $str ????
In the cart, i display the informartion like this, and here I also need to pass in the sizes for each product added to the cart.
// Display Cart:
function cart($connection)
{
foreach ($_SESSION as $name => $value)
{ // $name = name of session, and $value holds what kept in the session:
if ($value>0)
{ // Session is set:
if (substr($name,0,5) == 'cart_')
// Use only values from cart_
// WOULDNT IT BE HERE I SHOULD SOMEHOW INCLUDE THE SIZES TOO?? ///////////////////////////////////
{
$id = substr($name, 5, (strlen($name)-5)); // Anything after cart_ (1,2,or 43267 - product_ids, red)
// Get information for each product from product table
$sql = mysqli_query($connection, "SELECT * FROM products WHERE produkt_id = '".$id."'");
while ($get_row = mysqli_fetch_assoc($sql))
{
//echo '<img src="admin/product_img/thumbs/'.$get_row['produkt_id'].'.'.$get_row['img'].'" />'.'<br />';
// Get brand name from brands table:
$sql2 = mysqli_query($connection, "SELECT navn FROM brands WHERE brand_id = '".$get_row['brand_id']."'");
while ($get_row2 = mysqli_fetch_assoc($sql2))
{
$brand_navn = $get_row2['navn'];
}
// Get category from category table:
$sql3 = mysqli_query($connection, "SELECT navn FROM vare_grupper WHERE id = '".$get_row['type_id']."'");
while($get_row3 = mysqli_fetch_assoc($sql3))
{
$vare_type = $get_row3['navn'];
}
echo ucfirst($brand_navn) .' - ' .$vare_type.'<br />';
echo 'Model: ' .$get_row['link_navn'].'<br />';
// HERE I WANT TO ECHO OUT THE SIZE ////////// (Medium, Largetc) //////////////////////// //
echo 'Antal: '.$value.' '.'<br />'; //////////// THIS IS THE QUANTITY - SO 2 * MEDIUM if two is chosen..
echo 'Enheds pris: Kr. '.number_format($get_row['pris'],2).',-'.'<br />';
$sub_total = $get_row['pris'] * $value;
echo 'Subtotal: Kr. '.number_format($sub_total,2).',-'.'';
echo '<br /><br /><hr /><br />';
}
}
} else {
echo '<p>Der er ingen varer i indkøbskurven!</p>'; // Nothing in basket text, red.
}
}
}
I hope you get the point..
Basically, how do I also add the sizes in the script at the top, pass it in a session - and how do i display them with the product info from the script below?
Remember the sizes are from a different table, and can be:
S,M,L,XL,XXL
Or for jeans:
30/30 - 30/32 and loads more - so I made the decicion to keep them in a seperat table with a product id, isnt that the best way to do it or?
Klemme