[PHP] Winkelwagen items aantal aanpassen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Onderdelen van jouw functie: Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

C# developer

Functie Als C# ontwikkelaar ben jij de spin in het web bij deze organisatie. Jij begeleidt en traint de field engineers die bij de klanten machines leveren en installeren. Daarnaast ondersteun jij de field engineers als zij bij de klant vastlopen bij het installeren van de machine m.b.t. software matige vragen. Jouw doel is dan ook om de technische kennis van de field engineers door middel van training zoveel mogelijk uit te breiden. Dit om ervoor te zorgen dat zij zelfstandiger software matige problemen kunnen oplossen. Ook ben jij verantwoordelijk voor het bedenken van software oplossingen voor klanten en dit

Bekijk vacature »

.NET developer

Functie As a .NET developer you work together in a multidisciplinary development team with 1-2 Senior .NET developers, two front-end developers, Data Scientists and one UX designer. As a team you work on developing a Cloud based application and making this application more stable. Unit testing will also become very important in your new position. Together with the Senior .NET developer you will be responsible for developing the API. You work with a lot of data and occasionally there will also be data issues and some queries will have to be run. This means that you will work a lot

Bekijk vacature »

Laravel PHP developer in een jong team

Bedrijfsomschrijving Als je op zoek bent naar een werkplek waar plezier en uitdaging hand in hand gaan, dan is dit bedrijf de juiste keuze voor jou. Hier kun je werken aan uitdagende projecten en krijg je als developer veel verantwoordelijkheid. Het bedrijf waardeert kwaliteit boven kwantiteit en richt zich op het ontwikkelen van hoogwaardige applicaties en websites waar klanten enthousiast over zijn. Dit bedrijf is vooruitstrevend en streeft naar het leveren van de best mogelijke resultaten voor hun klanten. Als medior PHP ontwikkelaar met 3 jaar ervaring ben jij de persoon die we zoeken. Je krijgt hier de kans om

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

.NET Developer Azure

Dit ga je doen Het ontwerpen en bouwen van diverse applicaties (C#, ASP.NET, MVC); Het ontwikkelen van Webservices (WCF); Het meewerken aan de transitie naar Azure; Het samenwerken met collega's binnen een Scrumteam en meedenken over de User Stories; Het bouwen van unittesten; Meedenken over nieuwe tooling, ontwikkelingen en technologieën in de markt. Hier ga je werken Je komt te werken bij een organisatie die verantwoordelijk is voor de ontwikkeling van verschillende portalen. Deze portalen worden gebruikt door diverse partijen en jouw taak is om ervoor te zorgen dat deze optimaal functioneren. Je wordt onderdeel van een Scrumteam en werkt

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een development team met één Senior .NET developer en één junior .NET developer. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit moment veel gebruik van .NET met ASP.NET. Komend kwartaal gaan wij wel gedeeltelijk overstappen naar .NET Core. Verder werken wij ook met SOAP, REST, JSON, HTML5, CSS3

Bekijk vacature »
Mike Kuiper

Mike Kuiper

15/03/2016 21:08:15
Quote Anchor link
Beste Allemaal,

Ik ben bezig met het maken van een eigen webshop voor school. Ik loop echter op dit moment tegen twee problemen aan:

Probleem 1:

Na een hoop gepiel is het me gelukt om het aantal van een product in de cart aan te passen en dit aantal door te voeren in de cart_array session. Maar er treedt een probleem op als ik de aantallen van verschillende producten tegelijk wil aanpassen, want dan pakt hij het nieuwe ingevulde aantal en voert die door op alle producten. Dus als ik bijv. product 1 aantal aanpas naar 5, past hij het aantal in de session van product 2,3,4 etc. ook aan naar 5. Ik weet dat de fout in het pakken van het nieuwe ingevulde aantal zit, want hij pakt dus maar één aantal en voert die door voor alle producten, maar ik weet niet hoe ik het kan oplossen.

Probleem 2:
Mijn tweede probleem komt bij het verwijderen van de verschillende producten uit de winkelwagen. Het verwijderen gaat goed, het lukt om er één te verwijderen, maar ook meerdere tegelijk. Echter als je bijv. het eerste product verwijdert uit de $_SESSION['cart_array'] en je hebt bijv. nog 3 andere producten erin staan, worden de indexen: 1-2-3, terwijl het eerst 0-1-2-3 was. En dan kloppen mijn checkboxen niet meer, want als je dan weer het eerste product wil verwijderen, wil hij de 0-index pakken, maar die is er dus niet meer. Ik heb de regel sort($_SESSION['cart_array']; onder de regel unset($_SESSION['cart_array'][''.$remove_id.'']); proberen te plakken, maar dan verwijdert hij gewoon alle indexen. Hoe kan dit?

Dit is de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//       Section 1 (if user attempts to add something to the cart from the product page)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if(isset($_POST['pid']))
{

    $pid = $_POST['pid'];
    $wasFound = false;
    $i = 0;
    // If the cart session variable is not set or cart array is empty
       if (!isset($_SESSION['cart_array']) || count($_SESSION['cart_array']) < 1) {
    // RUN IF THE CART IS EMPTY OR NOT SET
    $_SESSION['cart_array'] = array(0 => array('product_id' => $pid, 'qty' => 1));
    }
else {
        // RUN IF THE CART HAS AT LEAST ONE ITEM IN IT
        foreach ($_SESSION['cart_array'] as $each_item) {
            $i++;
              while (list($key, $value) = each($each_item)) {
                  if ($key == "product_id" && $value == $pid) {
                      // That item is in cart already so let's adjust its quantity using array_splice()
                      array_splice($_SESSION["cart_array"], $i-1, 1, array(array("product_id" => $pid, "qty" => $each_item['qty'] + 1)));
                      $wasFound = true;
                  }
// close if condition
              } // close while loop
           } // close foreach loop
                  if ($wasFound == false) {
               array_push($_SESSION["cart_array"], array("product_id" => $pid, "qty" => 1));
                }
        
    }

       header("location: cart.php");
    exit();
}

?>


<form action="" method="post" enctype="multipart/formdata">
                        
<table align="center" width="700" bgcolor="skyblue">
                                
<tr align="center">
    <th>Remove</th>
    <th>Product(s)</th>
    <th>Quantity</th>
    <th>Total Price</th>  
</tr>
<?php

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//       Section 4 (render the cart for the user to view)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

$cartOutput = '';
$cartTotal = '';
if (!isset($_SESSION['cart_array']) || count($_SESSION['cart_array']) < 1) {
    echo $cartOutput = "<h2 align='center'>Your shopping cart is empty</h2>";
    }
else {
        $i = 0;
        foreach ($_SESSION['cart_array'] as $each_item) {
                                                
        $product_id = $each_item['product_id'];
                                                
        $sql = $db->prepare("SELECT * FROM products WHERE product_id = '$product_id' LIMIT 1");
        $sql->execute();
                                                
        while ($row = $sql->fetch()) {
        $product_price = $row['product_price'];
        $product_title = $row['product_title'];
        $product_image = $row['product_image'];

        }

                                                
        $price_total = $product_price * $each_item['qty'];
        $cartTotal = $price_total + $cartTotal;
        $i++;
        
// Items verwijderen
if(isset($_POST["remove_cart"]))
    {
    
                                    
    // Access the array and run code to remove that array index
    foreach($_POST['remove_item'] as $remove_id)
        {

            unset($_SESSION['cart_array'][''.$remove_id.'']);
        }

            header('location: cart.php');
    }

                                    
// Itemaantallen aanpassen                          
if (isset($_POST['item_to_adjust']) && $_POST['item_to_adjust'] != "") {
$item_to_adjust = $_POST['item_to_adjust'];
$quantity = $_POST['qty'];
$i = 0;
foreach($_POST['item_to_adjust'] as $adjust_id)
    {

        $i++;
        array_splice($_SESSION["cart_array"], $i-1, 1, array(array("product_id" => $adjust_id, "qty" => $quantity)));                        
    }
 }
                                  
?>

<tr align="center">
    <td>
    <td><input type="checkbox" name="remove_item[]" value="<?php echo $i - 1;?>" /></td>
    <td><?php echo $product_title; ?><br />
    <img src="admin_area/product_images/<?php echo $product_image;?>" width="60" height="60" /> </td>
    <input name="item_to_adjust[]" type="hidden" value="<?php echo $each_item['product_id'];?>" />
    <td><input type="text" size="4" name="qty" value="<?php echo $each_item['qty'];?>" maxlength="1" /></td>
    <td><?php echo '&euro;'.$price_total; ?></td>                              
</tr>

<?php      
                            
            }
                }

                                    
?>


<tr align="right">
<td colspan="4"><b>Sub Total:</b></td>
<td colspan="4"><?php echo '&euro;'.$cartTotal; ?></td>
</tr>
                            
<tr align="center">
    <td colspan="2"><input type="submit" name="remove_cart" value="Remove Item(s)" /></td>
    <td></td><input name="adjustBtn" type="submit" value="Update" /></td>
    <td><input type="submit" name="continue" value="Continue shopping" /></td>
    <td><a href="checkout.php"><button>Checkout</button></a></td>
    <td><a href="cart.php?cmd=emptycart">Empty Cart!</a></td>
                            
</tr>
                            
</table>
                        
</form>


Ik kom er maar niet uit!

Alvast bedankt, Mike
Gewijzigd op 15/03/2016 21:36:43 door Mike Kuiper
 
PHP hulp

PHP hulp

29/03/2024 13:43:30
 
Thomas van den Heuvel

Thomas van den Heuvel

16/03/2016 00:44:03
Quote Anchor link
Waarom een loze dimensie toevoegen met nietszeggende indexen?

Voeg direct onder $_SESSION['cart_array'] key-value paren toe met als key het product id, en als value de hoeveelheid. Dat is alle informatie die je nodig hebt.

Dus 5 producten van product met id 3 zitten als volgt in de sessie:
(edit: andersom dus :s)
$_SESSION['cart_array'][3] = 5;

In plaats van
$_SESSION['cart_array'][??? onbekende index ???][3] = 5;

De problemen ontstaan ook doordat je [??? onbekende index ???] verwart met het product id volgens mij.
Gewijzigd op 16/03/2016 23:49:22 door Thomas van den Heuvel
 
Mike Kuiper

Mike Kuiper

16/03/2016 20:46:39
Quote Anchor link
Nu je het zegt is dat inderdaad overbodig. De enige informatie die ik nodig heb is het product_id en het aantal ervan. Ik heb het nu zo gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php if(isset($_POST['pid']))
{

    $pid = $_POST['pid'];
    $qty = 1;
    $wasFound = false;
    // If the cart session variable is not set or cart array is empty
       if (!isset($_SESSION['cart_array']) || count($_SESSION['cart_array']) < 1) {
    // RUN IF THE CART IS EMPTY OR NOT SET
    $_SESSION['cart_array'] = array($pid => $qty);
    $wasFound = true;
    }

    
    // als cart niet leeg is, push item in de sessie                          
    if ($wasFound == false)
    {

        foreach($_SESSION['cart_array'][$pid] as $checkItem)
        {

            if ($checkItem == $pid)
            {

                $_SESSION['cart_array'][$pid][$qty]++;
            }

            echo 'lol';
        }

        
        $_SESSION['cart_array'][$pid] = $qty;
    }
}

?>


Nu zet hij alle producten mooi onder elkaar met de aantallen als values. Maar nu kom ik er even niet uit, hoe ik ervoor kan zorgen dat als iemand hetzelfde product nog een keer toevoegt, dat de quantity dan met 1 opgehoogd wordt.
Hij voert de foreach loop ook niet uit, want hij echo't de lol ook niet. Hoe kan dat?

Alvast bedankt, Mike
Gewijzigd op 16/03/2016 22:09:16 door Mike Kuiper
 
Thomas van den Heuvel

Thomas van den Heuvel

16/03/2016 23:52:45
Quote Anchor link
Bestudeer de constructie van de foreach() nog eens goed, ik denk dat hier de verwarring zit.

Er zijn in principe twee vormen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($array as $key => $value) {
    // ...
}
?>

Dus met twee "argumenten": as A => B, waarbij A de huidige key is van $array, en B de value, en
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($array as $value) {
    // ...
}
?>

Dus met één "argument": as B, waarbij B de huidige value is, de keys worden in deze variant verder buiten beschouwing gelaten.

Kijk nu nog eens naar je code. $checkItem representeert op dit moment in jouw code een value (een hoeveelheid), en geen key (geen product id).
Gewijzigd op 17/03/2016 14:21:12 door Thomas van den Heuvel
 
Dennis WhoCares

Dennis WhoCares

17/03/2016 20:29:59
Quote Anchor link
Wat dacht je van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$product_id = 1;
$amount = 3;

if(array_key_exists($product_id, $_SESSION['cart_array']))
  $_SESSION['cart_array'][$product_id] = $_SESSION['cart_array'][$product_id] + $amount;
else
  $_SESSION['cart_array'][$product_id] = $amount;


Weet je trouwens zeker dat je een winkelwagen als sessie wil opslaan?
De gebruiker verliest de producten zodra deze de browser afsluit.


---

regel 105 mis je trouwens je [] voor name="qty" => name="qty[]"
Gewijzigd op 17/03/2016 20:39:00 door Dennis WhoCares
 
Mike Kuiper

Mike Kuiper

17/03/2016 21:12:31
Quote Anchor link
@Dennis, na invoering van jouw stukje werkt hij eindelijk!
Maar wat was dan precies het verschil tussen deze twee stukjes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php             if (isset($_SESSION['cart_array'][$pid]))
                {

                    echo 'Hij bestaat';
                    $_SESSION['cart_array'][$pid] = $qty++;
                }

        
        $_SESSION['cart_array'][$pid] = $qty; ?>

Dit had ik namelijk voordat ik jou stukje invoerde en hij deed het wel, maar hij telde het aantal maar tot maximaal 2 bij. Ik weet ook waarom, want telkens als $_POST['pid'] wordt gezet wordt $qty weer op 1 gezet, dus kan hij maximaal tot 2 ophogen. Maar ik krijg het niet helemaal helder in mijn hoofd wat er anders is aan jouw stukje. Ik denk dat het nu wel werkt door de [$pid] + $qty i.p.v. [$pid] = $qty++;, is dat correct?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php         if(array_key_exists($pid, $_SESSION['cart_array'])) {
        $_SESSION['cart_array'][$pid] = $_SESSION['cart_array'][$pid] + $qty;
        }
else {
        $_SESSION['cart_array'][$pid] = $qty; ?>


Over of ik de winkelwagen in een sessie wil opslaan, ik dacht van wel, want ik wil sowieso niet de producten meteen in de database opslaan. Want als een klant uiteindelijk niet besteld, staan er overbodige producten in de database en daarom heb ik ervoor gekozen om het op te slaan in iets tijdelijks. Of is er een betere mogelijkheid?

In ieder geval erg bedankt voor de reacties, want het werkt nu!

Mvg, Mike
Gewijzigd op 17/03/2016 21:14:50 door Mike Kuiper
 
Dennis WhoCares

Dennis WhoCares

18/03/2016 07:04:18
Quote Anchor link
Hi Mike,

ik heb niet je hele code bekeken, maar een stukje van mijn cart class gegeven.

Zoals ik ook al aangaf, vergeet je de [] bij de qty in je formulier.
Hierdoor heb je uiteindelijk maar 1 $_POST['qty']
Voor producten gebruik je wel []

Je hebt een array: $_POST['item_to_adjust'] maar geen array $_POST['qty'] door de bovengenoemde reden.
Daarom veranderen zowiezo alle producten naar die ene zelfde $_POST['qty'], met de waarde wat bij je laatste product staat


met [$pid] = $qty++; zal nooit werken. Ik denk dat je $qty++; alleen apart kan gebruiken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$a = 10;
$b = 0;

$b = $a++;
echo $b;

Dit werkt ook niet :) Dan is $b gewoon 10.
Maar doe ik nou
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$a = 10;
$b = 0;

$a++; // <--

$b = $a; // <--
echo $b;

Dan is $b wel 11

Ik weet niet hoe ik dit goed moet uitleggen, wellicht dat een van de 'main' leden hier op het forum dit beter kan uitleggen.

Ikzelf heb gekozen om een cart in een cookie op te slaan, dit is volledig aan de gebruiker in zijn browser.
Uiteraard wil je geen carts van gebruikers bijhouden in je database, maar ik denk dat potentiele klanten het fijn vinden als hun winkelwagen nog bestaat wanneer ze weer eens terug komen.
Zo maak ik ook een 'wishlist' aan.

Dit doe ik met $_COOKIE en die laat ik voor max. 30 dagen bewaren.
Dit werkt bijna hetzelfde als $_SESSION, maar ik krijg geen array klakkeloos in een COOKIE, daarvoor gebruik ik dan json_encode($myCartArray); om op te slaan
Gewijzigd op 18/03/2016 07:11:56 door Dennis WhoCares
 
Thomas van den Heuvel

Thomas van den Heuvel

18/03/2016 10:21:25
Quote Anchor link
@Dennis
Allereerst, ik denk niet dat het vaak zal voorkomen dat je je browser "per ongeluk" afsluit tijdens het shoppen. Daarbij hangt het van meerdere instellingen af of "de gebruiker (direct) de producten verliest zodra deze de browser afsluit.", zowel aan de serverside als de clientside. Mijn browser herstelt bijvoorbeeld alle tabs bij het opnieuw opstarten (en de cookies met sessie id's die op zouden moeten houden met bestaan indien de browser afsluit -lifetime 0- zijn er ook nog steeds, ik weet nog steeds niet of je dit als een browserbug zou kunnen beschouwen). Dan is er ook nog andere functionaliteit om producten die je wilt hebben, te onthouden. Denk bijvoorbeeld aan een wishlist ofzo. Niet alles hoeft in je cart te zitten.

Ik weet niet of je voor de opslag van je cart cookies zou moeten gebruiken. Ik zou dit niet doen. Je ontsluit hiermee namelijk een stukje "interne administratie". Dit hoort simpelweg niet aan de gebruikerskant thuis als je het mij vraagt.

Dan snap ik het advies niet helemaal: predik je nu voor of tegen het gebruik van databases voor de opslag van carts? Er zijn trouwens ook sessiemanagementsystemen die via de database opereren, in plaats van de normale -file-based- sessies :).

On a sidenote:
$a++ wil zeggen "post increment", je hoogt hierbij de waarde van $a op nadat je deze hebt uitlezen / toegekend. Hierbij heeft de variabele aan welke je de waarde toekent dus de oude waarde van voor het ophogen.
++$a wil zeggen "pre increment", je hoogt hierbij de waarde van $a (direct) op voordat je deze waarde mogelijk toekent aan een andere variabele. In dat geval heeft de variabele aan welke je deze waarde toekent direct de nieuwe waarde van $a.
Als je dit soort verwarring wilt voorkomen, gebruik dan gewoon $a + 1 in plaats van fancy shorthands waarvan je de werking niet helemaal duidelijk is.
Gewijzigd op 18/03/2016 10:24:53 door Thomas van den Heuvel
 
Randy vsf

Randy vsf

18/03/2016 10:32:45
Quote Anchor link
Dennis WhoCares op 18/03/2016 07:04:18:
Ikzelf heb gekozen om een cart in een cookie op te slaan, dit is volledig aan de gebruiker in zijn browser.
Uiteraard wil je geen carts van gebruikers bijhouden in je database, maar ik denk dat potentiele klanten het fijn vinden als hun winkelwagen nog bestaat wanneer ze weer eens terug komen.
Zo maak ik ook een 'wishlist' aan.

Dit doe ik met $_COOKIE en die laat ik voor max. 30 dagen bewaren.
Dit werkt bijna hetzelfde als $_SESSION, maar ik krijg geen array klakkeloos in een COOKIE, daarvoor gebruik ik dan json_encode($myCartArray); om op te slaan


Wat als ik cookies uitschakel, of ze opruim bij het sluiten van de browser?
En waarom zou je de cart niet in de database willen opslaan?
Gewijzigd op 18/03/2016 10:33:35 door Randy vsf
 
Dennis WhoCares

Dennis WhoCares

18/03/2016 13:49:46
Quote Anchor link
In m'n privacy en cookie statement benadruk ik dat mijn site cookies nodig heeft voor bepaalde functies van m'n site.

Omdat ik daarvoor gekozen heb.
Ik ga geen carts en wishlists bewaren in m'n database op basis van ip adressen en/of browser fingerprints

(aangezien niet alle klanten een account nemen/willen)
Overigens krijg je een popup als je cookies niet aan hebt staan :)
 
Thomas van den Heuvel

Thomas van den Heuvel

18/03/2016 14:15:35
Quote Anchor link
Quote:
Omdat ik daarvoor gekozen heb.

Dit is geen onderbouwing.

Quote:
(aangezien niet alle klanten een account nemen/willen)

Ik weet niet helemaal zeker of die mensen het dan ook kunnen waarderen indien jij dan allerlei informatie op hun PC dumpt, waar ze een volgend bezoek mee geconfronteerd worden... Zal hun gemoedsrust ook niet helpen als je het mij vraagt.

Quote:
Overigens krijg je een popup als je cookies niet aan hebt staan :)

Behalve als JavaScript (ook) uit staat?
 
Dennis WhoCares

Dennis WhoCares

18/03/2016 17:34:03
Quote Anchor link
Thomas van den Heuvel op 18/03/2016 14:15:35:
Quote:
Omdat ik daarvoor gekozen heb.

Dit is geen onderbouwing.

Quote:
(aangezien niet alle klanten een account nemen/willen)

Ik weet niet helemaal zeker of die mensen het dan ook kunnen waarderen indien jij dan allerlei informatie op hun PC dumpt, waar ze een volgend bezoek mee geconfronteerd worden... Zal hun gemoedsrust ook niet helpen als je het mij vraagt.

Quote:
Overigens krijg je een popup als je cookies niet aan hebt staan :)

Behalve als JavaScript (ook) uit staat?


Dan moeten ze mn popup niet accepteren en forward ik ze gewoon terug waar ze vandaan komen

Dan krijg je een popup dat je javascript uitstaat..
Jij bent wel de leukste thuis he
wat als je css uitschakel
dan krijg je niks alleen tekst :) geen css popups helemaal niks

Volgens mij is t best wel standaard hoor dat n webshop cookies gebruikt en dat die cookie x aantal dagen op je browser blijft
Ik waardeer het in ieder geval wel als mijn 'wishlist' en/of winkelwagen gewoon nog blijft

bedenk eens wat n impact t op je database en snelheid van je webshop heeft als je van alle bezoekers op basis van ipadres,browser fingerprint of gebruikersid ALLE aanpassingen opslaat in een tijdelijk cart en wishlist tabel
en ik heb het niet over tientallen maar bedenk eens in 10duizenden

Mijn klanten hebben de mogelijkheid om hun bestelling te doen, zonder een gebruikersnaam en/of wachtwoord nodig te hebben
en als ze op t moment geen geld of toegang tot hun betaalpas of creditcard kunnen ze binnen 30 dagen nog steeds hun gewenste aankoop bekijken en afrekenen zonder de producten of diensten nogmaals uit te zoeken
Gewijzigd op 18/03/2016 17:37:40 door Dennis WhoCares
 
E vH

E vH

18/03/2016 17:44:39
Quote Anchor link
"Over of ik de winkelwagen in een sessie wil opslaan, ik dacht van wel, want ik wil sowieso niet de producten meteen in de database opslaan. "
--> Alles netjes de database in, gebruikersgemak :-)

"Want als een klant uiteindelijk niet besteld, staan er overbodige producten in de database en daarom heb ik ervoor gekozen om het op te slaan in iets tijdelijks"
--> Totdat de gebruiker bezig is met een winkelmandje, even lekker de donald duck uitgebreid gaat lezen om zijn of haar behoefte te doen, vervolgens terug komt en merkt dat zijn/haar winkelmandje verloren is gegaan omdat de sessie het niet heeft overleeft... klant heeft geen zin om opnieuw te beginnen.. en shopt rustig verder.|
--> Desnoods ruim je je database weer op na 30 dagen.. hou je het ook schoon ;-)

Waarom moeilijk doen over een database als de inhoud minimaal is?
--> vind je 1000 records al veel? dat is 0,00000001 % van wat een database aan kan ( bij wijze van ).
Gewijzigd op 18/03/2016 17:45:21 door E vH
 
Mike Kuiper

Mike Kuiper

18/03/2016 20:59:07
Quote Anchor link
@elmar ik weet nog niet heel veel over databases, maar zoals je het zegt maakt het dus niet zoveel uit. Ik dacht: hoe minder hoe beter.
 
L deB

L deB

19/03/2016 17:22:36
Quote Anchor link
Toen ik een winkelwagensysteem wou maken (begrijpen) heb ik eerst van github eentje gehaald. Misschien dat het voor jou ook kan helpen om een compleet en veilig voorbeeld te zien.

Ik heb een jaar geleden een zip ervan gehaald genaamd 'php-shopping-cart-master.zip' en heb daar heel veel aan gehad om te begrijpen hoe het werkt en erna aan te passen.

Ik noem het toch maar even
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.