Foreach doorlopen
Hallo,
Ik zit met het volgende probleem.. Ik heb een tabel die gegeneerd wordt uit een database, op dit moment bestaat deze uit 4 rijen. Deze rijen geef ik keurig weer in een tabel.

Achter de schermen ziet het er op dit moment zo uit:
Omdat iedere row unieke waardes heeft, wil ik deze verwerken in een array. Deze array wil ik vervolgens uitlezen en in de database stoppen. Tot op heden wil dit nog niet omdat iedere keer enkel de laatste row met haar unieke waarde wordt weergegeven?
Wat gaat er hier fout óf wat zie ik over het hoofd?
Thanks!
Paul
Ik zit met het volgende probleem.. Ik heb een tabel die gegeneerd wordt uit een database, op dit moment bestaat deze uit 4 rijen. Deze rijen geef ik keurig weer in een tabel.

Achter de schermen ziet het er op dit moment zo uit:
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
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
<?php
if (isset($_POST['submit_management'])) {
echo 'Hallo';
$i = 0;
foreach ($_POST['product'] as $key => $value) {
echo "Key:" . $key . " Value:" . $value;
$i++;
}
}
?>
<form method="post">
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Product</th>
<th>Kostprijs</th>
<th>Verkoopprijs</th>
<th>Voorraad</th>
<th>Inkopen</th>
</tr>
</thead>
<tbody>
<?php
$query = 'SELECT * FROM products p
LEFT JOIN stock s
ON p.id=s.product_id
WHERE s.shop_id= "'.$shop['id'].'"';
$result = mysql_query ($query) or die(mysql_error());
while ($products = mysql_fetch_assoc ($result)) {
?>
<input type="hidden" name="product[id]" value="<?= $products['product_id']; ?>" />
<tr>
<td><?= $products['name']; ?></td>
<td><?= display_money($products['price']); ?></td>
<td><input name="product[selling_price]" class="form-control" value="0"></td>
<td><?= $products['amount']; ?></td>
<td><input name="product[amount]" class="form-control" value="0"></td>
</tr>
<?php
}
?>
</tbody>
</table>
if (isset($_POST['submit_management'])) {
echo 'Hallo';
$i = 0;
foreach ($_POST['product'] as $key => $value) {
echo "Key:" . $key . " Value:" . $value;
$i++;
}
}
?>
<form method="post">
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Product</th>
<th>Kostprijs</th>
<th>Verkoopprijs</th>
<th>Voorraad</th>
<th>Inkopen</th>
</tr>
</thead>
<tbody>
<?php
$query = 'SELECT * FROM products p
LEFT JOIN stock s
ON p.id=s.product_id
WHERE s.shop_id= "'.$shop['id'].'"';
$result = mysql_query ($query) or die(mysql_error());
while ($products = mysql_fetch_assoc ($result)) {
?>
<input type="hidden" name="product[id]" value="<?= $products['product_id']; ?>" />
<tr>
<td><?= $products['name']; ?></td>
<td><?= display_money($products['price']); ?></td>
<td><input name="product[selling_price]" class="form-control" value="0"></td>
<td><?= $products['amount']; ?></td>
<td><input name="product[amount]" class="form-control" value="0"></td>
</tr>
<?php
}
?>
</tbody>
</table>
Omdat iedere row unieke waardes heeft, wil ik deze verwerken in een array. Deze array wil ik vervolgens uitlezen en in de database stoppen. Tot op heden wil dit nog niet omdat iedere keer enkel de laatste row met haar unieke waarde wordt weergegeven?
Wat gaat er hier fout óf wat zie ik over het hoofd?
Thanks!
Paul
De namen van de product-velden in de loop zijn niet product-specifiek: ze heten alle
product[id],
product[selling_price],
product[amount]
Als je onderscheid wilt kunnen maken tussen de verschillende producten zou je hier nog een extra dimensie tussen moeten fietsen, bijvoorbeeld door de toevoeging van een product-id:
product[1234][id]
product[1234][selling_price]
product[1234][amount]
Je hoeft dan in principe ook niet meer per se het id apart mee te geven, deze zit al inbegrepen in de andere velden.
Hiermee zijn alle veldnamen uniek en wordt er niets overschreven.
product[id],
product[selling_price],
product[amount]
Als je onderscheid wilt kunnen maken tussen de verschillende producten zou je hier nog een extra dimensie tussen moeten fietsen, bijvoorbeeld door de toevoeging van een product-id:
product[1234][id]
product[1234][selling_price]
product[1234][amount]
Je hoeft dan in principe ook niet meer per se het id apart mee te geven, deze zit al inbegrepen in de andere velden.
Hiermee zijn alle veldnamen uniek en wordt er niets overschreven.
Gewijzigd op 16/02/2017 14:27:48 door Thomas van den Heuvel
Nu heb je alleen geen gewone array meer maar een multidimensional. Daar moet je op een andere manier doorheen loopen. Bijvoorbeeld zo.
En in de loop alles weer in de database zetten.
Code (php)
En in de loop alles weer in de database zetten.
Thanks dame en heer!
Dit werkt inderdaad.
Dit werkt inderdaad.
Nu komt de volgende vraag.. Hoe kan ik er nu voor zorgen dat ik b.v. enkel de key "selling_price" weergeef?
Wat ik hiermee probeer te bereiken is dat ik de wijzigingen die de gebruiker doorgeeft wordt opgeslagen in de database. Zo wil ik dat als iemand 10 artikel inkoopt, deze ook worden doorgezet naar de database. Met $key en $value enkel gaat dat natuurlijk niet lukken. Ik heb geprobeerd om b.v. $key['selling_price'] te gebruiken maar dat werkt niet..
Wat ik hiermee probeer te bereiken is dat ik de wijzigingen die de gebruiker doorgeeft wordt opgeslagen in de database. Zo wil ik dat als iemand 10 artikel inkoopt, deze ook worden doorgezet naar de database. Met $key en $value enkel gaat dat natuurlijk niet lukken. Ik heb geprobeerd om b.v. $key['selling_price'] te gebruiken maar dat werkt niet..
Om voort te borduren op @Marlies d'r voorbeeld: $inner_product is wederom een array, je zou dus direct (b)in(nen) de eerste loop kunnen refereren aan $inner_product['selling_price']. Dat is dan de selling_price van het huidige product met id $id.
EDIT: de binnenste foreach-loop heb je dan in principe ook niet nodig als je enkel geïnteresseerd bent in selling_price.
EDIT: trouwens, wat je uit het array leent aan informatie bepaal je zelf :).
EDIT: de binnenste foreach-loop heb je dan in principe ook niet nodig als je enkel geïnteresseerd bent in selling_price.
EDIT: trouwens, wat je uit het array leent aan informatie bepaal je zelf :).
Gewijzigd op 19/02/2017 15:23:04 door Thomas van den Heuvel




