login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Winkelwagen

Offline roy - 18/11/2006 10:42 (laatste wijziging 04/03/2008 10:10)
Avatar van royPHP gevorderde Beste,

Ik heb het volgende script om een Product aan het winkelwagentje toe te voegen:

  1. <?php
  2. // add.php
  3.  
  4. // Het product wat we toevoegen moeten we eerst controleren
  5. if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer'];
  6. else exit("Verzin een mooie foutmelding als productnummer geen integer is.");
  7. if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid'];
  8. else exit("Wederom een leuke foutmelding. Nu als het aantal geen getal is.");
  9.  
  10. // Kijken of er wel iets besteld is?
  11. if ($hoeveelheid == 0) {
  12. echo "<p>Ja dag Jan! 0 bestellen doen we niet aan!</p>\n";
  13. echo "<p><a href=\"javascript:history.back()\">Hupsakee, een pagina in het verleden!</a></p>\n";
  14. exit();
  15. }
  16.  
  17. // Controleren of er al inhoud is op de winkelwagen
  18. if (empty($_SESSION['cart'])){
  19. // Nee dus, een nieuwe maken
  20. $_SESSION['cart'] = $productnummer.",".$hoeveelheid; // Het productnummer,hoeveelheid staat dus in een sessie
  21. } else {
  22. // Winkelwagen opsplitsen op de pipe
  23. $cart = explode("|",$_SESSION['cart']);
  24.  
  25. // Winkelwagen inhoud tellen
  26. $count = count($cart);
  27.  
  28. // En controleren of het product al in de winkelwagen zit
  29. $add = TRUE; // var om later te kijken of we moeten toevoegen
  30. foreach($cart as $products)
  31. {
  32. // Exploden
  33. /*
  34.   $product[x] -->
  35.   x == 0 -> productnummer
  36.   x == 1 -> hoeveelheid
  37.   */
  38. $product = explode(",",$products);
  39. if ($product[0] == $productnummer) {
  40. // Product al in de winkelwagen
  41. $product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe
  42. $add = FALSE; // Dus niet toevoegen
  43. }
  44.  
  45. // En weer in de sessie zetten
  46. $i++;
  47. if ($i == 1) {
  48. $_SESSION['cart'] = $product[0].",".$product[1];
  49. } else {
  50. $_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1];
  51. }
  52. }
  53.  
  54. if ($add) { // Als we dus wel moeten toevoegen
  55. $_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
  56. }
  57. }
  58.  
  59. // forward to cart
  60. header("Location: cart.php");
  61. ?>


Als je twee keer hetzelfde product toevoegd, dan ziet het winkelwagentje het als twee verschillende producten.

Hoe kan je kijken of het productnummer al bestaat en dan alleen de hoeveelheid verhoogd?

Hopende op een passende oplossen,

3 antwoorden

Gesponsorde links
Offline Nowan - 18/11/2006 14:06
Avatar van Nowan Nieuw lid Mij lijkt het beter om je winkelwagen met een database-tabel te doen... en dan elke gebruiker identifiën met een (UUID) (Universal unique identifier), dat geeft je meer opties...

Dwz: telkens een gebruiker iets besteld ga je een nieuw record aanmaken, elk record dat als UUID de UUID van die klant heeft behoort dan tot de bestelling van die klant.

die UUID kan je dan opslaan in een session.

Dit maakt het mogelijk om met SQL alle records op te roepen waarvaan de UUID waarde gelijk is aan die in de session (dus die van de klant) en geeft ook de mogelijkheid velden te updaten, bv als een gebruiker 2x een product bestelt.

voor de rest kan je lijnen als deze:

  1. $product[1] = $product[1] + $hoeveelheid; // Nieuwe hoeveelheid is oude + nieuwe


vervangen door:

  1. $product[1] += $hoeveelheid;
Offline roy - 19/11/2006 14:18
Avatar van roy PHP gevorderde Ok, maar hiermee krijg ik geen antwoord op mijn vraag...

Mijn vraag is: hoe doorzoek je een array en verhoog je alleen de hoeveelheid bij het zelfde pruductnummer. (dus alleen als 2 keer hetzelfde product wordt toegevoegd)
Offline Dark_Paul - 19/11/2006 14:20 (laatste wijziging 19/11/2006 14:20)
Avatar van Dark_Paul PHP ver gevorderde PHP.net: in_array
PHP.net: array_key_exists
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.195s