Merge remote-tracking branch 'origin/master'
commit
63ae22f55b
|
@ -1,3 +1,8 @@
|
|||
<!--
|
||||
TODO:
|
||||
- 80 Zeichen
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
@ -49,7 +54,266 @@
|
|||
</div>
|
||||
</header>
|
||||
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
// Benutzer ID abholen
|
||||
//$userID = ?;
|
||||
$userID = 5;
|
||||
|
||||
// Überprüfen, ob Bücher im Warenkorb liegen
|
||||
if(isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
|
||||
|
||||
// Jedes Buch im Warenkorb durchgehen
|
||||
foreach ($_SESSION["cart"] as $key=>$item) {
|
||||
|
||||
// Ausgewählte Menge speichern
|
||||
$quantity = $item['quantity'];
|
||||
|
||||
$sql = '';
|
||||
|
||||
$servername = "localhost";
|
||||
$username = "web_b-3";
|
||||
$password = "een7Ao6s";
|
||||
$dbname = "bibliothek_candle";
|
||||
|
||||
$connection =
|
||||
mysqli_connect($servername, $username, $password, $dbname);
|
||||
|
||||
if (!$connection) {
|
||||
die("Verbindung fehlgeschlagen: " . mysqli_connect_error());
|
||||
}
|
||||
|
||||
/* SQL-Befehl vorbereiten */
|
||||
$sql = $connection->prepare("SELECT b.BuchID, b.Anzahl,
|
||||
b.MaxAnzahl
|
||||
FROM `buch` AS b
|
||||
WHERE b.BuchID = ?
|
||||
GROUP BY b.BuchID;");
|
||||
|
||||
// Parameter binden
|
||||
$sql->bind_param("i", $ID);
|
||||
|
||||
// ID festlegen
|
||||
$ID = $key;
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sql->execute();
|
||||
|
||||
// Ergebnis speichern
|
||||
$result = $sql->get_result();
|
||||
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
while($row = mysqli_fetch_assoc($result)) {
|
||||
$bookID = $row['BuchID'];
|
||||
$bookQuantity = $row['Anzahl'];
|
||||
$bookMaxQuantity = $row['MaxAnzahl'];
|
||||
$quantityNew = $quantity;
|
||||
// Überprüfen, ob die ausgewählte Menge vorhanden ist
|
||||
if ($bookQuantity == 0) {
|
||||
// Alle Bücher ausgeliehen
|
||||
$sqlSearch = $connection->prepare(
|
||||
"SELECT AusleihID,
|
||||
Enddatum,
|
||||
Reserviert
|
||||
FROM `ausgeliehenes_buch`
|
||||
WHERE BuchID=?
|
||||
AND Reserviert=0
|
||||
ORDER BY `Enddatum` LIMIT ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlSearch->bind_param("ii", $bookID, $quantity);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlSearch->execute();
|
||||
|
||||
// Ergebnis speichern
|
||||
$resultSearch = $sqlSearch->get_result();
|
||||
|
||||
// Alle Ergebnisse durchgehen
|
||||
while($rowSearch = mysqli_fetch_assoc($resultSearch)) {
|
||||
|
||||
$borrowID = $rowSearch['AusleihID'];
|
||||
$borrowEndDate = $rowSearch['Enddatum'];
|
||||
|
||||
//Buch zu `ausgeliehenes_buch` hinzufügen
|
||||
$sqlInsert =
|
||||
"INSERT INTO `ausgeliehenes_buch`
|
||||
(`AusleihID`, `BenutzerID`, `BuchID`,
|
||||
`Anfangsdatum`, `Enddatum`, `Verlängerbar`,
|
||||
`Reserviert`)
|
||||
VALUES
|
||||
(NULL, '$userID', '$bookID',
|
||||
DATE_ADD('$borrowEndDate', INTERVAL 1 DAY),
|
||||
DATE_ADD(
|
||||
DATE_ADD('$borrowEndDate', INTERVAL 1 DAY),
|
||||
INTERVAL 14 DAY),
|
||||
'1', '0');";
|
||||
|
||||
mysqli_query($connection, $sqlInsert);
|
||||
|
||||
// Anzahl des Buches in der Datenbank reduzieren
|
||||
$sqlUpdate = $connection->prepare(
|
||||
"UPDATE `ausgeliehenes_buch`
|
||||
SET `Verlängerbar` = '0',
|
||||
`Reserviert` = '1'
|
||||
WHERE `AusleihID` = ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlUpdate->bind_param("i", $borrowID);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlUpdate->execute();
|
||||
}
|
||||
}
|
||||
else if ($quantity <= $bookQuantity) {
|
||||
// Ausgewählte Menge ist komplett vorhanden
|
||||
|
||||
// Alle gleichen Bücher in die Datenbank einfügen
|
||||
while ($quantityNew != 0) {
|
||||
// Buch zu `ausgeliehenes_buch` hinzufügen
|
||||
$sqlInsert =
|
||||
"INSERT INTO `ausgeliehenes_buch`
|
||||
(`AusleihID`, `BenutzerID`, `BuchID`,
|
||||
`Anfangsdatum`, `Enddatum`, `Verlängerbar`,
|
||||
`Reserviert`)
|
||||
VALUES
|
||||
(NULL, '$userID', '$bookID', CURDATE(),
|
||||
DATE_ADD(CURDATE(), INTERVAL 14 DAY),
|
||||
'1', '0'); ";
|
||||
|
||||
mysqli_query($connection, $sqlInsert);
|
||||
|
||||
$quantityNew--;
|
||||
}
|
||||
|
||||
$bookQuantityNew = $bookQuantity - $quantity;
|
||||
|
||||
// Anzahl des Buches in der Datenbank reduzieren
|
||||
$sqlReduce = $connection->prepare(
|
||||
"UPDATE `buch`
|
||||
SET `Anzahl` = '$bookQuantityNew'
|
||||
WHERE `buch`.`BuchID` = ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlReduce->bind_param("i", $bookID);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlReduce->execute();
|
||||
|
||||
}
|
||||
else if ($quantity > $bookQuantity) {
|
||||
echo "Ich bin ein Platzhalter";
|
||||
// Bücher, welche noch vorhanden sind
|
||||
// Alle gleichen Bücher in die Datenbank einfügen
|
||||
$quantityNew = $quantity - $bookQuantity;
|
||||
$quantityRest = $quantity;
|
||||
while ($quantityNew != 0) {
|
||||
//Buch zu `ausgeliehenes_buch` hinzufügen
|
||||
$sqlInsert =
|
||||
"INSERT INTO `ausgeliehenes_buch`
|
||||
(`AusleihID`, `BenutzerID`, `BuchID`,
|
||||
`Anfangsdatum`, `Enddatum`, `Verlängerbar`,
|
||||
`Reserviert`)
|
||||
VALUES
|
||||
(NULL, '$userID', '$bookID', CURDATE(),
|
||||
DATE_ADD(CURDATE(), INTERVAL 14 DAY),
|
||||
'1', '0'); ";
|
||||
|
||||
mysqli_query($connection, $sqlInsert);
|
||||
|
||||
$quantityNew--;
|
||||
$quantityRest--;
|
||||
}
|
||||
|
||||
$bookQuantityNew =
|
||||
$bookQuantity - ($quantity - $bookQuantity);
|
||||
|
||||
// Anzahl des Buches in der Datenbank reduzieren
|
||||
$sqlReduce = $connection->prepare(
|
||||
"UPDATE `buch`
|
||||
SET `Anzahl` = '$bookQuantityNew'
|
||||
WHERE `buch`.`BuchID` = ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlReduce->bind_param("i", $bookID);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlReduce->execute();
|
||||
|
||||
// Bücher, welche bereits ausgeliehen wurden
|
||||
$sqlSearch = $connection->prepare(
|
||||
"SELECT AusleihID,
|
||||
Enddatum,
|
||||
Reserviert
|
||||
FROM `ausgeliehenes_buch`
|
||||
WHERE BuchID=?
|
||||
AND Reserviert=0
|
||||
ORDER BY `Enddatum` LIMIT ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlSearch->bind_param("ii", $bookID, $quantityRest);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlSearch->execute();
|
||||
|
||||
// Ergebnis speichern
|
||||
$resultSearch = $sqlSearch->get_result();
|
||||
|
||||
// Alle Ergebnisse durchgehen
|
||||
while($rowSearch = mysqli_fetch_assoc($resultSearch)) {
|
||||
|
||||
$borrowID = $rowSearch['AusleihID'];
|
||||
$borrowEndDate = $rowSearch['Enddatum'];
|
||||
|
||||
//Buch zu `ausgeliehenes_buch` hinzufügen
|
||||
$sqlInsert =
|
||||
"INSERT INTO `ausgeliehenes_buch`
|
||||
(`AusleihID`, `BenutzerID`, `BuchID`,
|
||||
`Anfangsdatum`, `Enddatum`, `Verlängerbar`,
|
||||
`Reserviert`)
|
||||
VALUES
|
||||
(NULL, '$userID', '$bookID',
|
||||
DATE_ADD('$borrowEndDate', INTERVAL 1 DAY),
|
||||
DATE_ADD(
|
||||
DATE_ADD('$borrowEndDate', INTERVAL 1 DAY),
|
||||
INTERVAL 14 DAY),
|
||||
'1', '0');";
|
||||
|
||||
mysqli_query($connection, $sqlInsert);
|
||||
|
||||
// Anzahl des Buches in der Datenbank reduzieren
|
||||
$sqlUpdate = $connection->prepare(
|
||||
"UPDATE `ausgeliehenes_buch`
|
||||
SET `Verlängerbar` = '0',
|
||||
`Reserviert` = '1'
|
||||
WHERE `AusleihID` = ?;");
|
||||
|
||||
// Parameter binden
|
||||
$sqlUpdate->bind_param("i", $borrowID);
|
||||
|
||||
// SQL-Befehl ausführen
|
||||
$sqlUpdate->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "Buch konnte nicht gefunden werden.";
|
||||
}
|
||||
|
||||
mysqli_close($connection);
|
||||
|
||||
// Buch aus dem Warenkorb löschen
|
||||
// Überprüfen, ob das Buch im Warenkorb liegt
|
||||
if (isset($_SESSION['cart'][$bookID])) {
|
||||
// Buch existiert im Warenkorb, kann gelöscht werden
|
||||
unset($_SESSION['cart'][$bookID]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div id="reservierung">
|
||||
<h1>Reservierung erfolgreich bestätigt</h1>
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
<!--
|
||||
TODO:
|
||||
- Seite ist noch nicht erreichbar
|
||||
- Jetzt reservieren Button nur klickbar machen, wenn Bücher im Warenkorb liegen
|
||||
- Löschbestätigung -> removeBookFromCart verschieben
|
||||
- ? Artikel (totale Anzahl aller Artikel)
|
||||
|
||||
TODO (optional, geringe Priorität):
|
||||
- 80 Zeichen
|
||||
|
@ -25,7 +23,7 @@ TODO (optional, geringe Priorität):
|
|||
<link rel="icon" href="pictures/candle.png">
|
||||
<script src="notwendiges_laden.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<body onload="on_load()">
|
||||
<header id="header">
|
||||
<h1 class="kopf" >
|
||||
<br><br>
|
||||
|
@ -236,6 +234,38 @@ TODO (optional, geringe Priorität):
|
|||
|
||||
<!-- TODO: Auslagern (falls möglich) -->
|
||||
<script>
|
||||
|
||||
/*
|
||||
* Überprüft, ob Bücher im Warenkorb existieren.
|
||||
* Ist die nicht der Fall, wird der "Jetzt reservieren" Button
|
||||
* deaktiviert.
|
||||
*/
|
||||
function on_load() {
|
||||
var book_container =
|
||||
document.getElementsByClassName("book_container");
|
||||
if (book_container.length > 0) {
|
||||
// Bücher existieren, Button aktivieren
|
||||
document.getElementById("reserveNow").disabled = false;
|
||||
getTotalQuantity();
|
||||
}
|
||||
else {
|
||||
// Bücher existieren nicht, Button deaktivieren
|
||||
document.getElementById("reserveNow").disabled = true;
|
||||
document.getElementById("totalQuantityText").innerHTML
|
||||
= "0 Artikel";
|
||||
}
|
||||
}
|
||||
|
||||
function getTotalQuantity() {
|
||||
const collection = document.getElementsByClassName("quantityText");
|
||||
var totalAmount = 0;
|
||||
for (var i = 0; i < collection.length; i++) {
|
||||
totalAmount = totalAmount + parseInt(collection[i].innerHTML);
|
||||
}
|
||||
document.getElementById("totalQuantityText").innerHTML
|
||||
= `${totalAmount} Artikel`;
|
||||
}
|
||||
|
||||
function open_bookDetails(ID) {
|
||||
var data = new URLSearchParams();
|
||||
data.append("bookID", ID);
|
||||
|
@ -263,6 +293,7 @@ TODO (optional, geringe Priorität):
|
|||
if (this.responseText.includes('Erfolgreich verringert')) {
|
||||
toChange = document.getElementById(`quantityText${ID}`);
|
||||
toChange.innerHTML = parseInt(toChange.innerHTML) - 1;
|
||||
getTotalQuantity();
|
||||
}
|
||||
}
|
||||
request.setRequestHeader('Content-type',
|
||||
|
@ -289,6 +320,7 @@ TODO (optional, geringe Priorität):
|
|||
if (this.responseText.includes('Erfolgreich erhöht')) {
|
||||
toChange = document.getElementById(`quantityText${ID}`);
|
||||
toChange.innerHTML = parseInt(toChange.innerHTML) + 1;
|
||||
getTotalQuantity();
|
||||
}
|
||||
}
|
||||
request.setRequestHeader('Content-type',
|
||||
|
|
Loading…
Reference in New Issue