Ik ben momenteel met school bezig en loop tegen het probleem
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Eindopdracht 1.6\bestel.php on line 49
Ik heb dit online bekeken en vond een oplossing om te bekijken of het wel een array of object is, dit was het helaas niet.

Code:
<?php if ($conn->query( $sql ) ) {
$bestelnummer = $conn->insert_id;
$producten = $_POST['aantal'];

foreach ($producten as $productnummer => $aantal) {
if ($aantal > 0) {
$sql = "INSERT INTO 'bestelregel' ('bestelnummer', 'productnummer', 'aantal')
VALUES ('" . $bestelnummer . "', '" . $productnummer . "', '" . $aantal . "')";

$conn->query($sql);
echo "Bestelling is succesvol geplaatst met bestelnummer: " . $bestelnummer;

}
}
}

?>
En
<?php
$sql = 'SELECT * FROM producten WHERE categorie = "wijnen"';
$result = $conn->query($sql);
$categorie = ("Wijnen");

if ($result->num_rows > 0) {
echo '
<div class="form-group col-md-6">
<table class="table">
<thead>
<h2 class="ml-1">' . $categorie . '</h2>
<tr>
<th class="col-md-1">Product</th>
<th>Prijs</th>
<th>Aantal</th>
</tr>
</thead>
<tbody>
';

while($row = $result->fetch_assoc()) {
echo '
<tr>
<td>' . $row['naam'] . '</td>
<td>' . $row['prijs'] . '</td>
<td> <input type="text" class="form-control" class="w-100" name="aantal"> </input></td>
</tr>
'; }
echo '</tbody>
</table>
</div>';
} else {
echo '0 results';
}
?>
Horen hierbij, ik hoop dat iemand mij hier mee kan helpen.
Verander name="aantal" in name="aantal[<productnummer>]" waarbij <productnummer> het productnummer uit je queryresultaten is.

aantal[] zorgt ervoor dat $_POST['aantal'] een array is, en <productnummer> heb je nodig omdat dit overeenstemt met $productnummer in je foreach: foreach ($producten as [color=#ff0000]$productnummer[/color] => $aantal).
Kan je het script tussen code-tags zetten?
Thomas van den Heuvel op 21/06/2020 17:01:10

Verander name="aantal" in name="aantal[<productnummer>]" waarbij <productnummer> het productnummer uit je queryresultaten is.

aantal[] zorgt ervoor dat $_POST['aantal'] een array is, en <productnummer> heb je nodig omdat dit overeenstemt met $productnummer in je foreach: foreach ($producten as [color=#ff0000]$productnummer[/color] => $aantal).


Dit heeft geholpen, hartelijk dank!

Enige probleem waar ik nu mee zit is dat hij hem niet in phpmyadmin plaatst, wat ondanks de code na checken helemaal goed lijkt.

Ik heb doormiddel van de echo alles uitgeprint,

Hier kwam uit dat hij de productcode niet kan vinden.
Alleen ik zie niet waarom niet..

Je bedoelt je database. PhpMyAdmin is niets meer dan een in PHP gebouwd script om de database mee uit te lezen en te beheren.
- Ariën - op 21/06/2020 17:20:34

Je bedoelt je database. PhpMyAdmin is niets meer dan een in PHP gebouwd script om de database mee uit te lezen en te beheren.


Oh, ik wist dit niet.
Hartelijk bedankt voor het informeren.

Ik heb de code ook net aangepast met codetag voor u.
Echo op lijn 9 eens $sql.
- Ariën - op 21/06/2020 17:25:17

Echo op lijn 9 eens $sql.


Dan krijg ik dit:
INSERT INTO 'bestelregel' ('bestelnummer', 'productnummer', 'aantal') VALUES ('55', '', '22')
Haal de quotes eens weg om je tabelnaam.
- Ariën - op 21/06/2020 18:07:30

Haal de quotes eens weg om je tabelnaam.


Krijg ik hetzelfde resultaat:
INSERT INTO bestelregel ('bestelnummer', 'productnummer', 'aantal') VALUES ('57', '', '22')
Met verschil in quotes. De veldnamen horen ook zonder quotes.

Maar probeer dit dan eens uit te voeren in phpMyAdmin.

Reageren