Merge remote-tracking branch 'origin/master'
commit
63ae22f55b
|
@ -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>
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue