Archief - Product laten verdwijnen na plaatsen in mandje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

koebeest

Legacy Member
Hallo,

Ik ben nu bezig aan een project met een online webshop. Nu is het dus mogelijk om goederen in een winkelmandje te plaatsen maar het item blijft gewoon staan in de lijst (voor de persoon die aan het kopen is) waardoor hij meerdere keren datzelfde item kan kopen. Dit zou NIET mogelijk mogen zijn voor hem maar wel voor de andere klanten . Dus ik zou het met javascript ofzo willen onzichtbaar zetten voor die gebruiker. Wanneer het artikel niet meer in de sessie 'cart' staat zou het wel weer zichtbaar mogen zijn.

Wel nog even duidelijk benadrukken dat het puur LOKAAL is dat het artikel moet verdwijnen, het moet ten allen tijde zichtbaar blijven voor andere klanten.

Mercie eh !

Jens

passero

Legacy Member
als ge elk product mooi in een apparte div steekt kan je gemakkelijk door middel van

document.getElementById("naamDiv").style.display = "none";

koebeest

Legacy Member
ahzo, sorry voor mijn onkunde voor de moment. Maar ik moet toegeven dat ik hier alles wat door elkaar aan't slaan ben. Hoe ga ik dan juist gaan kijken in mijn sessie enzo?

Thx!

passero

Legacy Member
In princiepe ga je dat via PHP moeten doen:

PHP:
<?php
//Check if product is in session
if(product_is_in_session($pid))
{
   $style="dislpay:none";
}
else
{
   $style= "";
}
?>
<script language="javascript"
function addProduct(pid)
{
   var aDiv = document.getElementById("product_" + id);
   aDiv.style.display = "none";
}
</script>
<div id="product_<?php echo $pid;?>"  style="<?php echo $style;?>">
hier komt uw productinfo 
<input type=button onclick="addProduct(<?php echo $pid;?>);"
</div>

koebeest

Legacy Member
Ok , het is me al gelukt om hem niet laten toe te voegen. Is ook goed voor mij. Maar nu vroeg ik me af hoe het mogelijk is om tussen 2 pagina's foutmeldingen weer te geven. Dus je hebt de winkelpagina, je klikt op toevoegen en dan gaat hij naar de toevoegpagina die dan weer terugverwijst naar de winkelpagina. Nu wil ik dat hij dus dat hij op de winkelpagina een foutmelding geeft die werd gegeven op de toevoegpagina. Dus eigenlijk een fout van pagina 2 laten weergeven op pagina 1.

Thx! :)

Edit:

Bijkomend probleem en snap niet waarom. Wanneer je dus een artikel gaat toevoegen met zelfde barcode en lijn gaat hij het artikel dus gewoon uit het mandje gaan verwijderen in plaats van gewoon niets te doen.... hij mag dus niets doen :(

Onderstaande code :

PHP:
<?php
// add.php
session_start();

if(is_numeric($_GET['b'])) $productnummer = $_GET['b'];
else exit("Productnummer bestaat niet");
if(is_numeric($_GET['h'])) $hoeveelheid = $_GET['h'];
else exit("Ongeldige hoeveelheid");
if(is_numeric($_GET['l'])) $lijn = $_GET['l'];
else exit("Ongeldige lijn");

// Kijken of er wel iets besteld is?
if ($hoeveelheid == 0) {
  echo "<p>U probeerde een 0 bestelling te maken. Dit is echter niet toegestaan. Gelieve opnieuw te proberen.</p>\n";
  echo "<p><a href=\"javascript:history.back()\">Vorige pagina</a></p>\n";
  exit();
}

// Controleren of er al inhoud is op de winkelwagen
if (empty($_SESSION['cart'])){
  //een nieuwe maken
  $_SESSION['cart'] = $productnummer.",".$hoeveelheid.",".$lijn;  // Het productnummer,hoeveelheid staat dus in een sessie
} else {
  
  $cart = explode("|",$_SESSION['cart']);

 
  $count = count($cart);

 
  $add = TRUE;   // var om later te kijken of we moeten toevoegen
  foreach($cart as $products)
  {

    $product = explode(",",$products);
	 if ($product[2] == $lijn) {

		 }else{

    // En weer in de sessie zetten
    $i++;
    if ($i == 1) {
      $_SESSION['cart'] = $product[0].",".$product[1].",".$product[2];
    } else {
      $_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1].",".$product[2];
    }
    }
  }

  if ($add) { // Als we dus wel moeten toevoegen
 $_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid.",".$lijn;
}
}


header("Location: index.php?p=gl&&t=wagen");
?>

koebeest

Legacy Member
Kan iemand me uitleggen waarom hij na het toevoegen van het TWEEDE artikel hij elk artikel dat dubbel voorkomt weer gaat wissen uit de lijst, in plaats van gewoon te laten staan. Tis behoorlijk dringend . Code staat hierboven

Lord Kveldulv

Legacy Member
Ik zou dat product ten alle tijde zichtbaar laten voor de klant. Anders is het misschien verwarrend. Ben ook nog gene enkele shop tegen gekomen waar het zo is. En als er nu ene gouden regel is in e-commerce, of voor websites int algemeen dan is het wel: doe wat de bezoeker gewend is van op een ander.
Als hij in de shop ne 2de keer dat product koopt zet dan in de shopping cart het tellerke +1. Als hij slechts 1 product kan kopen verwijs hem daar ne shopping cart een toon de melding dat slechts 1 per klant toegestaan is. Ik weet bijv. van mijn eigen dat als ik op ne webshop zit dat ik wel es een product durf toevoegen, en nog wat verder kijken tot ik een vergelijkbaar product tegenkom en dan wil ik es vergelijken door mijn eerste product terug eens op te zoeken. Als ik het dan niet terug vind dan ben jij mij kwijt als klant. Daar ga ik geen 30 seconden achter zoeken. Dan zit ik al bij de concurrentie.
Just my 2 cents.

ps. nasty code. Probeer wa meer OO te werken...

koebeest

Legacy Member
Heb geen tijd voor OO , moet ik dat nog allemaal beginnen uitzoeken (ben niet gewoon om er mee te werken dus ik zou er wel wat moeten op zoeken) en dat kost tijd... en als er nu 1 ding is wat ik niet heb voor dit project is het wel tijd. Nu blijft wel de vraag waarom hij vanaf het 2de artikel toegevoegd is, hij bij het kiezen van hetzelfde product het product gewoon laat verdwijnen in het winkelmandje. Lees: hij wist het uit de sessie...

:(

mpolo

Legacy Member
Waarom zou je het product willen laten verdwijnen :s

Je kan beter gewoon --> als men het product voor de 2de keer toevoegt het aantal opvoeren en niet een tweede item toevoegen


Dus gewoon controleren zit het product in het mandje?

Ja --> hoog het aantal op
Nee --> voeg toe als nieuw product

Zo zou ik het doen tenminste :)

koebeest

Legacy Member
mpolo zei:
Waarom zou je het product willen laten verdwijnen :s

Je kan beter gewoon --> als men het product voor de 2de keer toevoegt het aantal opvoeren en niet een tweede item toevoegen


Dus gewoon controleren zit het product in het mandje?

Ja --> hoog het aantal op
Nee --> voeg toe als nieuw product

Zo zou ik het doen tenminste :)

Dat is het juist , hij mag niet verhogen in aantal . Het is 1 stuk per persoon, en nu heeft hij dus de fout dat hij in het winkelmandje het dubbele artikel weer laat verdwijnen

even een voorbeeld

3 artikels in een lijst:

Artikel 1
Artikel 2
Artikel 3

Ik koop artikel 1, komt in winkelmandje
Ik klik nog eens op artikel 1 en dat doet niets.

Ik voeg artikel 2 toe , dus nu staan artikel 1 en 2 in winkelmandje. Ik klik nogmaals op artikel 2. Hij haalt artikel 2 weer uit het winkelmandje , in plaats van weer niets te doen zoals in het geval met het eerste artikel. DAT is mijn probleem voor de moment ...

Help?!

dJeez

Legacy Member
Debuggen is dan de boodschap. In principe gooi je ook niet de hele winkelmand in een sessievariabele, maar koppel je die op basis van een sessie ID aan gegevens in een DB.

Op basis van uw beschrijving zit uw fout sowieso in de foreach lus.

koebeest

Legacy Member
mja, djeez. Dat was ook een voorwaarde van het systeem dat ik moet maken. Ik mag geen extra tabellen aanmaken dan de bestaan de tabellen dus ik moet alles volgens erg strikte richtlijnen doen. Tot mijn grote ergernis trouwens :)

Smoerf

Legacy Member
maak een array aan in je sessie, gebruik de productcode als key en tis opgelost. Een key is uniek, dus kan je het niet 2 keer toevoegen.

Ofwel store je ze als value in een array in je sessie, bij het afdrukken van je productoverzicht kijk je gewoon of een product al voorkomt in je sessie array

koebeest

Legacy Member
Probleem is opgelost, die else na :

PHP:
<?php if ($product[2] == $lijn) {
            $add = false;
        }?>

Moest daar niet staan :)

Toch bedankt!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan