Meerdere inputvelden met dezelfde classnaam posten samen met hun ids
Onderop staat een 'Wijzig winkelmand' knop, die het hele gebeuren moet posten naar een PHP script wanneer erop wordt geklikt.
Wat zou de beste manier zijn om dit op te lossen? Misschien alle ids opsturen samen met de hoeveelheid, en dan kijken of deze aanwezig is in de sessie array, zo ja deze vervangen?
Wanneer ik nu klik op wijzig winkelmand wordt er maar 1 product gepost, ipv allemaal, hoe kan ik deze allemaal posten? En wat zou de beste manier zijn om dit te doen? Misschien de waardes in een array/object stoppen en deze mergen met de sessie array waar alle producten in zitten?
Mijn code zoals ik het nu heb:
Mijn winkelmand tabel
Code (php)
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
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
<div class="col-md-8">
<div class="kl-title-block clearfix text-left tbk-symbol--line tbk-icon-pos--after-title">
<h2 class="tbk__title montserrat fs-34 fw-semibold black winkelmandtitle">Uw Winkelmand</h2>
<span class="tbk__symbol ">
<span></span>
</span>
<h4 class="tbk__subtitle fs-22 fw-thin">Bent u niets vergeten?</h4>
</div>
<div class="table-responsive">
<table class="table carttable">
<thead>
<tr>
<th>Verwijder</th>
<th>Afbeelding</th>
<th>Product</th>
<th>Prijs</th>
<th>Aantal</th>
<th>Totaal</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 13" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad-13" class="product-title">
<img class="attachment-shop_thumbnail" src="images/defaultimage.jpg" alt="Bad 13" title="Bad 13">
</a>
</td>
<td>
<a href="baden/bad-13" class="product-title">
Bad 13
</a>
</td>
<td> 1500</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 13" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 1500</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 14" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad-14" class="product-title">
<img class="attachment-shop_thumbnail" src="images/defaultimage.jpg" alt="Bad 14" title="Bad 14">
</a>
</td>
<td>
<a href="baden/bad-14" class="product-title">
Bad 14
</a>
</td>
<td> 800</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 14" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 800</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 1" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad1" class="product-title">
<img class="attachment-shop_thumbnail" src="cms/images/bad.jpg" alt="Bad 1" title="Bad 1">
</a>
</td>
<td>
<a href="baden/bad1" class="product-title">
Bad 1
</a>
</td>
<td> 1000</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 1" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 1000</td>
</tr>
</tbody>
</table>
<input type="submit" class="button updatebutton" name="update_cart" value="Wijzig winkelmand">
</div>
</div>
<div class="kl-title-block clearfix text-left tbk-symbol--line tbk-icon-pos--after-title">
<h2 class="tbk__title montserrat fs-34 fw-semibold black winkelmandtitle">Uw Winkelmand</h2>
<span class="tbk__symbol ">
<span></span>
</span>
<h4 class="tbk__subtitle fs-22 fw-thin">Bent u niets vergeten?</h4>
</div>
<div class="table-responsive">
<table class="table carttable">
<thead>
<tr>
<th>Verwijder</th>
<th>Afbeelding</th>
<th>Product</th>
<th>Prijs</th>
<th>Aantal</th>
<th>Totaal</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 13" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad-13" class="product-title">
<img class="attachment-shop_thumbnail" src="images/defaultimage.jpg" alt="Bad 13" title="Bad 13">
</a>
</td>
<td>
<a href="baden/bad-13" class="product-title">
Bad 13
</a>
</td>
<td> 1500</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 13" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 1500</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 14" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad-14" class="product-title">
<img class="attachment-shop_thumbnail" src="images/defaultimage.jpg" alt="Bad 14" title="Bad 14">
</a>
</td>
<td>
<a href="baden/bad-14" class="product-title">
Bad 14
</a>
</td>
<td> 800</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 14" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 800</td>
</tr>
</tbody>
<tbody>
<tr>
<td><a href="#" class="remove" id="Bad 1" title="Verwijder dit product"></a></td>
<td>
<a href="baden/bad1" class="product-title">
<img class="attachment-shop_thumbnail" src="cms/images/bad.jpg" alt="Bad 1" title="Bad 1">
</a>
</td>
<td>
<a href="baden/bad1" class="product-title">
Bad 1
</a>
</td>
<td> 1000</td>
<td>
<div class="quantity">
<input type="number" step="1" min="0" name="quantity" id="Bad 1" value="1" title="Qty" class="input-text qty quantityclass text" size="4">
</div>
</td>
<td> 1000</td>
</tr>
</tbody>
</table>
<input type="submit" class="button updatebutton" name="update_cart" value="Wijzig winkelmand">
</div>
</div>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
//Wijzig winkelmand met het aantal producten
tpj('.cartsection').on('click', '.updatebutton', function(event) {
var $edit = tpj('.quantityclass').attr('id'),
$aantal = tpj('.quantity').find( "input[name='quantity']" ).val(),
url = 'includes/cartoverzicht.php';
var posting = tpj.post( url, { edit: $edit, aantal: $aantal} );
posting.done(function( data ) {
var content = tpj( data );
tpj( "#cartresult" ).empty().append( content );
});
});
tpj('.cartsection').on('click', '.updatebutton', function(event) {
var $edit = tpj('.quantityclass').attr('id'),
$aantal = tpj('.quantity').find( "input[name='quantity']" ).val(),
url = 'includes/cartoverzicht.php';
var posting = tpj.post( url, { edit: $edit, aantal: $aantal} );
posting.done(function( data ) {
var content = tpj( data );
tpj( "#cartresult" ).empty().append( content );
});
});
Wanneer ik nu klik op de knop pakt hij altijd het eerste product, het aantal post hij wel gewoon netjes.
Dus kort samengevat: wat is de beste manier om alle productaantallen te posten en deze te vervangen voor de huidige quantity waardes in de sessie array?
Er wordt maar 1 ding gepost omdat de veldnamen allemaal hetzelfde zijn: quantity. Dan moet je blijkbaar nog een textueel id uit een veld peuteren... dit lijkt mij allemaal hopeloos complex? Ik hoop dat je ook echte (auto-increment) id's voor producten gebruikt? Dan wordt het simpel. Hanteer de array-vorm voor naamgeving van inputvelden en de hoeveelheid voor waarden, dus zoiets:
Dit kun je rechtstreeks serializen en geeft je direct de informatie die je wilt: 12 x product met id <product id>, die allemaal netjes terug te vinden zijn in het array $_POST['products'].
Gewijzigd op 15/03/2018 16:05:40 door Thomas van den Heuvel
Thomas van den Heuvel op 15/03/2018 16:04:38:
Maar dat is toch je hele actuele winkelmand? Ik zou bij het bijwerken dan ook de oorspronkelijke winkelmand leegkieperen en gewoon opnieuw vullen met de zojuist verstuurde data.
Er wordt maar 1 ding gepost omdat de veldnamen allemaal hetzelfde zijn: quantity. Dan moet je blijkbaar nog een textueel id uit een veld peuteren... dit lijkt mij allemaal hopeloos complex? Ik hoop dat je ook echte (auto-increment) id's voor producten gebruikt? Dan wordt het simpel. Hanteer de array-vorm voor naamgeving van inputvelden en de hoeveelheid voor waarden, dus zoiets:
Dit kun je rechtstreeks serializen en geeft je direct de informatie die je wilt: 12 x product met id <product id>, die allemaal netjes terug te vinden zijn in het array $_POST['products'].
Er wordt maar 1 ding gepost omdat de veldnamen allemaal hetzelfde zijn: quantity. Dan moet je blijkbaar nog een textueel id uit een veld peuteren... dit lijkt mij allemaal hopeloos complex? Ik hoop dat je ook echte (auto-increment) id's voor producten gebruikt? Dan wordt het simpel. Hanteer de array-vorm voor naamgeving van inputvelden en de hoeveelheid voor waarden, dus zoiets:
Dit kun je rechtstreeks serializen en geeft je direct de informatie die je wilt: 12 x product met id <product id>, die allemaal netjes terug te vinden zijn in het array $_POST['products'].
Bedankt voor je reactie, ik heb het anders opgelost. Namelijk alle quantities en productnamen posten in een json object, deze decoden in mijn php script en waar de productnaam gelijk is aan de key van de array (dat zijn namelijk de productnamen) past hij de quantity aan.