Hallo,
ich steh auf dem Schlauch...
Folgendes Problem:
Man kann Items in den Warenkorb legen und diese dann per Button ordern. Diese Daten schreibe ich beim Klick auf "Kaufen" in eine Datenbank. Zumindest Teilweise.
Dazu gibt es eine Form mit hidden Input Fields. Zum Test habe ich eine var_dump ausgabe gemacht, welche super klappt. Wenn ich ein Item kaufen möchte wird das auch in die Datenbank geschrieben. Bei mehreren wird nur das letzte in die Datenbank geschrieben. Wie muss ich meine Form ändern, damit es alle Items in die Datenbank schreibt und nicht nur das letzte. Die Schleife an sich funktioniert, da die var_dump Ausgabe alle Items auflistet.
<?php
<form class="formLog" action="includes/test.php" method="post">
<?php
foreach($_SESSION["shopping_cart"] as $values)
{
$_GET['id'] = $_SESSION['id'];
$_GET["item_id"] = $values["item_id"];
$_GET["item_quantity"] = $values["item_quantity"];
if (!empty($_GET['id'])) {
echo '<input type="hidden" name="id" value="'.$_GET['id'].'">';
}
else {
echo '<input type="hidden" name="id">';
}
if (!empty($_GET["item_id"])) {
echo '<input type="hidden" name="item_id" value="'.$_GET["item_id"].'">';
}
else {
echo '<input type="hidden" name="item_id">';
}
if (!empty($_GET["item_quantity"])) {
echo '<input type="hidden" name="item_quantity" value="'.$_GET["item_quantity"].'">';
}
else {
echo '<input type="hidden" name="item_quantity">';
}
var_dump($_GET['id']);
var_dump($_GET["item_id"]);
var_dump($_GET["item_quantity"]);
}
?>
<p class="pLog">
<button class="buttonLog" name="place_offer" type="submit"> Kaufen </button>
</p>
</form>
?>
und der Teil, welcher die Daten in die Datenbank schreibt
<?php
if (isset($_POST['place_offer']))
{
require 'dbOfferCon.inc.php';
$UID = $_POST['id'];
$PrID= $_POST["item_id"];
$PAm = $_POST["item_quantity"];
$sql = "INSERT INTO offers (UserID, ProductID, PAmount) VALUES (?, ?, ?);";
// Here we initialize a new statement using the connection from the dbh.inc.php file.
$stmt = mysqli_stmt_init($conn);
// Then we prepare our SQL statement AND check if there are any errors with it.
if (!mysqli_stmt_prepare($stmt, $sql))
{
// If there is an error we send the user back to the signup page.
header("Location: Warenkorb.php?error=sqlerror");
exit();
}
else
{
// Next we need to bind the type of parameters we expect to pass into the statement, and bind the data from the user.
mysqli_stmt_bind_param($stmt, "sss", $UID, $PrID, $PAm);
// Then we execute the prepared statement and send it to the database!
// This means the user is now registered!
mysqli_stmt_execute($stmt);
// Lastly we send the user back to the signup page with a success message!
header("Location: ../Warenkorb.php?signup=success");
exit();
}
}
// Then we close the prepared statement and the database connection!
mysqli_stmt_close($stmt);
mysqli_close($conn);
Sorry für die fehlende Formatierung. Aber die Formatierungsbuttons sind bei mir ohne Funktion. Ich verwende Google Chrome.
ich steh auf dem Schlauch...
Folgendes Problem:
Man kann Items in den Warenkorb legen und diese dann per Button ordern. Diese Daten schreibe ich beim Klick auf "Kaufen" in eine Datenbank. Zumindest Teilweise.
Dazu gibt es eine Form mit hidden Input Fields. Zum Test habe ich eine var_dump ausgabe gemacht, welche super klappt. Wenn ich ein Item kaufen möchte wird das auch in die Datenbank geschrieben. Bei mehreren wird nur das letzte in die Datenbank geschrieben. Wie muss ich meine Form ändern, damit es alle Items in die Datenbank schreibt und nicht nur das letzte. Die Schleife an sich funktioniert, da die var_dump Ausgabe alle Items auflistet.
<?php
<form class="formLog" action="includes/test.php" method="post">
<?php
foreach($_SESSION["shopping_cart"] as $values)
{
$_GET['id'] = $_SESSION['id'];
$_GET["item_id"] = $values["item_id"];
$_GET["item_quantity"] = $values["item_quantity"];
if (!empty($_GET['id'])) {
echo '<input type="hidden" name="id" value="'.$_GET['id'].'">';
}
else {
echo '<input type="hidden" name="id">';
}
if (!empty($_GET["item_id"])) {
echo '<input type="hidden" name="item_id" value="'.$_GET["item_id"].'">';
}
else {
echo '<input type="hidden" name="item_id">';
}
if (!empty($_GET["item_quantity"])) {
echo '<input type="hidden" name="item_quantity" value="'.$_GET["item_quantity"].'">';
}
else {
echo '<input type="hidden" name="item_quantity">';
}
var_dump($_GET['id']);
var_dump($_GET["item_id"]);
var_dump($_GET["item_quantity"]);
}
?>
<p class="pLog">
<button class="buttonLog" name="place_offer" type="submit"> Kaufen </button>
</p>
</form>
?>
und der Teil, welcher die Daten in die Datenbank schreibt
<?php
if (isset($_POST['place_offer']))
{
require 'dbOfferCon.inc.php';
$UID = $_POST['id'];
$PrID= $_POST["item_id"];
$PAm = $_POST["item_quantity"];
$sql = "INSERT INTO offers (UserID, ProductID, PAmount) VALUES (?, ?, ?);";
// Here we initialize a new statement using the connection from the dbh.inc.php file.
$stmt = mysqli_stmt_init($conn);
// Then we prepare our SQL statement AND check if there are any errors with it.
if (!mysqli_stmt_prepare($stmt, $sql))
{
// If there is an error we send the user back to the signup page.
header("Location: Warenkorb.php?error=sqlerror");
exit();
}
else
{
// Next we need to bind the type of parameters we expect to pass into the statement, and bind the data from the user.
mysqli_stmt_bind_param($stmt, "sss", $UID, $PrID, $PAm);
// Then we execute the prepared statement and send it to the database!
// This means the user is now registered!
mysqli_stmt_execute($stmt);
// Lastly we send the user back to the signup page with a success message!
header("Location: ../Warenkorb.php?signup=success");
exit();
}
}
// Then we close the prepared statement and the database connection!
mysqli_stmt_close($stmt);
mysqli_close($conn);
Sorry für die fehlende Formatierung. Aber die Formatierungsbuttons sind bei mir ohne Funktion. Ich verwende Google Chrome.
Kommentar