Merge remote-tracking branch 'origin/master'

master
Nils Eilinghoff 2023-06-14 18:25:52 +02:00
commit 63ae22f55b
2 changed files with 299 additions and 3 deletions

View File

@ -1,3 +1,8 @@
<!--
TODO:
- 80 Zeichen
-->
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@ -49,7 +54,266 @@
</div> </div>
</header> </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"> <div id="reservierung">
<h1>Reservierung erfolgreich bestätigt</h1> <h1>Reservierung erfolgreich bestätigt</h1>

View File

@ -1,9 +1,7 @@
<!-- <!--
TODO: TODO:
- Seite ist noch nicht erreichbar - Seite ist noch nicht erreichbar
- Jetzt reservieren Button nur klickbar machen, wenn Bücher im Warenkorb liegen
- Löschbestätigung -> removeBookFromCart verschieben - Löschbestätigung -> removeBookFromCart verschieben
- ? Artikel (totale Anzahl aller Artikel)
TODO (optional, geringe Priorität): TODO (optional, geringe Priorität):
- 80 Zeichen - 80 Zeichen
@ -25,7 +23,7 @@ TODO (optional, geringe Priorität):
<link rel="icon" href="pictures/candle.png"> <link rel="icon" href="pictures/candle.png">
<script src="notwendiges_laden.js" defer></script> <script src="notwendiges_laden.js" defer></script>
</head> </head>
<body> <body onload="on_load()">
<header id="header"> <header id="header">
<h1 class="kopf" > <h1 class="kopf" >
<br><br> <br><br>
@ -236,6 +234,38 @@ TODO (optional, geringe Priorität):
<!-- TODO: Auslagern (falls möglich) --> <!-- TODO: Auslagern (falls möglich) -->
<script> <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) { function open_bookDetails(ID) {
var data = new URLSearchParams(); var data = new URLSearchParams();
data.append("bookID", ID); data.append("bookID", ID);
@ -263,6 +293,7 @@ TODO (optional, geringe Priorität):
if (this.responseText.includes('Erfolgreich verringert')) { if (this.responseText.includes('Erfolgreich verringert')) {
toChange = document.getElementById(`quantityText${ID}`); toChange = document.getElementById(`quantityText${ID}`);
toChange.innerHTML = parseInt(toChange.innerHTML) - 1; toChange.innerHTML = parseInt(toChange.innerHTML) - 1;
getTotalQuantity();
} }
} }
request.setRequestHeader('Content-type', request.setRequestHeader('Content-type',
@ -289,6 +320,7 @@ TODO (optional, geringe Priorität):
if (this.responseText.includes('Erfolgreich erhöht')) { if (this.responseText.includes('Erfolgreich erhöht')) {
toChange = document.getElementById(`quantityText${ID}`); toChange = document.getElementById(`quantityText${ID}`);
toChange.innerHTML = parseInt(toChange.innerHTML) + 1; toChange.innerHTML = parseInt(toChange.innerHTML) + 1;
getTotalQuantity();
} }
} }
request.setRequestHeader('Content-type', request.setRequestHeader('Content-type',