Met school zijn we op dit moment bezig met het leren van PHP, en daarvoor maken we enkele opdrachten. Nu moesten we een opdracht doen waarbij de gebruiker een boodschappenlijstje kan maken, door verschillende producten toe te voegen en te verwijderen. Eerst wist ik niet goed hoe je dit aan moest pakken, en toen dacht ik dat het met een array wel zou lukken. Dit ging goed totdat ik wilde dat de gebruiker ook zelf dingen kon toevoegen.
Nu is mijn vraag dus, hoe kan ik in mijn code ervoor zorgen dat de gebruiker zelf ook dingen kan toevoegen?
<?php
session_start();
$product = array("Teddyberen","Legodoosjes","Barbiepoppen","Computer spelletjes");
$aantal = array("0","0","0","0");
if ($_SESSION["aantal"] == NULL)
{
$_SESSION["aantal"] = $aantal;
}
if ($_SESSION["product"] == NULL)
{
$_SESSION["product"] = $product;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<p>
Gaat u ook wel eens naar een speelgoedwinkel om cadeautjes te kopen,
maar komt u er dan thuis achter dat u toch iets bent vergeten?
</br>
Dit kan nu nooit meer gebeuren door dit handige boodschappenlijstje.
</br>
Kies hieronder de producten die u wilt kopen en hoeveel daarvan,
dan wordt er een handig lijstje gemaakt.
</br>
<form action="boodschappen.php" method="POST">
Product:
<select name="product">
<option value="">-----Kies uw product-----</value>
<?php
$product = $_SESSION["product"];
for ($i = 0; $i < count($product); $i++)
{
echo "<option value=$i>$product[$i]</value>";
}
$_SESSION["product"] = $product;
?>
</select>
</br>
Aantal:
<input type="number" name="amount">
</br>
<input type="submit" value="Voeg toe" name="add">
<input type="submit" value="Verwijder" name="sub">
<input type="submit" value="Reset" name="reset">
</form>
Ook kunt u nog een nieuw product toevoegen, als deze nog niet tussen de mogelijkheden stond.
</br>
Dit kan met behulp van onderstaand formulier:
</br></br>
<form action="boodschappen.php" method="POST">
Naam nieuw product:
<input type="text" name="new_product">
</br>
<input type="submit" value="Voeg toe" name="new">
</form>
<?php
if (isset($_POST["product"]) && isset($_POST["amount"]))
{
$keuze = $_POST["product"];
$hoeveelheid = $_POST["amount"];
$aantal = $_SESSION["aantal"];
if (isset($_POST["add"]))
{
$aantal["$keuze"] = $aantal["$keuze"] + $hoeveelheid;
}
if (isset($_POST["sub"]))
{
$aantal["$keuze"] = $aantal["$keuze"] - $hoeveelheid;
if ($aantal["$keuze"] < 0)
{
$aantal["$keuze"] = $aantal["$keuze"] + $hoeveelheid;
echo "<b>Sorry, er moet wel een positief aantal producten op uw lijstje staan.";
echo "</br>";
echo "Uw bewerking wordt ongedaan gemaakt...</b>";
echo "</br></br>";
}
}
$_SESSION["aantal"] = $aantal;
}
if (isset($_POST["reset"]))
{
$aantal = $_SESSION["aantal"];
for ($i = 0; $i < count($aantal); $i++)
{
$aantal["$i"] = $aantal["$i"] - $aantal["$i"];
}
$_SESSION["aantal"] = $aantal;
}
if (isset($_POST["new"]))
{
$new_product = $_POST["new_product"];
$array_new[0] = "$new_product";
$product = $_SESSION["product"];
$product = $product + $array_new;
$_SESSION["product"] = $product;
}
$product = $_SESSION["product"];
for ($i = 0; $i < count($product); $i++)
{
if ($aantal["$i"] != 0)
{
echo $aantal["$i"];
echo "x ";
echo $product["$i"];
echo "</br>";
}
}
$_SESSION["product"] = $product;
?>
</p>
</body>
</html>
Ik heb zelf al geprobeerd om iets te doen, maar dit werkte niet. Dit is het stukje van "if (isset($_POST["new"]))". Ik weet niet of het nieuwe voorwerp hier goed aan de array wordt toegevoegd, en hij laat het nieuwe voorwerp niet bij de keuzemogelijkheden zien.
Wanneer iemand hier een oplossing voor weet zou ik dat heel fijn vinden.
P.S. We hebben pas net over SESSION's geleerd, dus weet niet zeker of daar misschien de fout in zit.