Sort selectable and Date added. Delete also works

This commit is contained in:
2022-10-03 20:43:43 +02:00
parent e2ce612318
commit 40bb148b33
3 changed files with 168 additions and 32 deletions

View File

@@ -26,8 +26,7 @@ if (strpos($headers['content-type'], 'image/') !== false) {
#--- #---
$ItemPriceCents = $ItemPrice * 100; $ItemPriceCents = floatval(str_replace(',', '.', str_replace('.', '', $ItemPrice))) * 100;
$conn = new mysqli($servername, $username, $password, $db); $conn = new mysqli($servername, $username, $password, $db);
// Check connection // Check connection

View File

@@ -2,8 +2,10 @@
include 'config/config.php'; include 'config/config.php';
function generateListItem($ListItemID, $ItemImage, $ItemTitle, $ItemLink, $ItemPrice, $ItemComment, $ItemReserved) function generateListItem($ListItemID, $ItemImage, $ItemTitle, $ItemLink, $ItemPrice, $ItemComment, $ItemReserved, $ItemDate)
{ {
global $loggedin;
$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); $formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
if (strlen($ItemComment) == 0) { if (strlen($ItemComment) == 0) {
@@ -12,25 +14,43 @@ function generateListItem($ListItemID, $ItemImage, $ItemTitle, $ItemLink, $ItemP
echo (' echo ('
<div class="col"> <div class="col">
<div class="card shadow-sm"> <div class="card shadow-sm">
<img src="' . $ItemImage . '" class="card-img-top"> <div class="card-header">
<div class="card-body"> <h5 class="card-title">' . $ItemTitle . '</h5>
<h5 class="card-title">' . $ItemTitle . '</h5> </div>
<p class="card-text">' . $ItemComment . '</p> <img src="' . $ItemImage . '" class="card-img-top">
<div class="d-flex justify-content-between align-items-center"> <div class="card-body">
<div class="btn-group"> <p class="card-text">' . $ItemComment . '</p>
<a href="' . $ItemLink . '" class="btn btn-sm btn-outline-secondary" role="button" target="_blank">zum Anbieter</a> <div class="row justify-content-end">
<button type="button" class="btn btn-sm ' . ($ItemReserved == true ? 'btn-outline-info' : 'btn-outline-secondary') . '" data-reserved="' . $ItemReserved . '" data-wishid="' . $ListItemID . '" data-bs-toggle="modal" data-bs-target="#reservationModal">' . ($ItemReserved == true ? 'Reservierung aufheben' : 'Reservieren') . '</button> <small class="text-muted text-end">' . $formatter->formatCurrency($ItemPrice / 100, 'EUR') . '</small>
</div>
</div>
<div class="card-footer text-muted">
<div class="d-flex justify-content-between">
<div class="d-inline btn-group">
<a href="' . $ItemLink . '" class="btn btn-sm btn-outline-secondary" role="button" target="_blank">zum Anbieter</a>
<button type="button" class="btn btn-sm ' . ($ItemReserved == true ? 'btn-outline-info' : 'btn-outline-secondary') . '" data-reserved="' . $ItemReserved . '" data-wishid="' . $ListItemID . '" data-bs-toggle="modal" data-bs-target="#reservationModal">' . ($ItemReserved == true ? 'Reservierung aufheben' : 'Reservieren') . '</button>');
if($loggedin == true)
{
echo('
<button type="button" class="btn btn-sm btn-outline-danger" data-wishid="' . $ListItemID . '" data-bs-toggle="modal" data-bs-target="#deleteModal">Löschen</button>'
);
}
echo('
</div>
<div class="d-inline">
<small class="text-muted text-end">' . date('m.d.y', strtotime($ItemDate)) . '</small>
</div>
</div> </div>
<small class="text-muted">' . $formatter->formatCurrency($ItemPrice / 100, 'EUR') . '</small>
</div> </div>
</div> </div>
</div> </div>
</div>
'); ');
} }
function wishlistMainBuilder($ListID) function wishlistMainBuilder($ListID, $sortby)
{ {
global $servername, $username, $password, $db; global $servername, $username, $password, $db;
@@ -78,12 +98,32 @@ function wishlistMainBuilder($ListID)
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3"> <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
'); ');
$sql = 'SELECT ID, title, description, link, image, reserved, price FROM whishes WHERE whislist = ' . $ListID . ' ORDER BY RAND()'; $sort = 'id';
switch ($sortby) {
case 'price_asc':
$sort = 'price ASC';
break;
case 'price_desc':
$sort = 'price DESC';
break;
case 'date_desc':
$sort = 'date DESC';
break;
case 'date_asc':
$sort = 'date ASC';
break;
case 'random':
$sort = 'RAND()';
break;
}
$sql = 'SELECT ID, title, description, link, image, reserved, price, date FROM whishes WHERE whislist = ' . $ListID . ' ORDER BY ' . $sort;
$result = $conn->query($sql); $result = $conn->query($sql);
if ($result !== false && $result->num_rows > 0) { if ($result !== false && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) { while ($row = $result->fetch_assoc()) {
generateListItem($row['ID'], $row['image'], $row['title'], $row['link'], $row['price'], $row['description'], $row['reserved']); generateListItem($row['ID'], $row['image'], $row['title'], $row['link'], $row['price'], $row['description'], $row['reserved'], $row['date']);
} }
} }

127
index.php
View File

@@ -8,11 +8,18 @@ include_once('config/config.php');
$ListID = -1; $ListID = -1;
$loggedin = false; $loggedin = false;
$sortby = '';
if (isset($_GET['list'])) { if (isset($_GET['list'])) {
$ListID = $_GET['list']; $ListID = $_GET['list'];
} }
if (isset($_POST['sortby'])) {
$sortby = $_POST['sortby'];
}
print_r($sortby);
if (isset($_SESSION['listid'])) { if (isset($_SESSION['listid'])) {
if ($ListID == $_SESSION['listid']) { if ($ListID == $_SESSION['listid']) {
$loggedin = true; $loggedin = true;
@@ -93,6 +100,40 @@ if (isset($_POST['reservation'])) {
$conn->close(); $conn->close();
} }
if (isset($_POST['delete']) && $loggedin == true) {
if (isset($_POST['WhishID'])) {
$WhishID = $_POST['WhishID'];
$WhishTitle = '';
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die('Connection failed: ' . $conn->connect_error);
}
$sql = 'SELECT image, title FROM whishes WHERE ID = ' . $WhishID;
$result = $conn->query($sql);
if ($result !== false && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
unlink($row['image']);
$WhishTitle = $row['title'];
}
}
$sql = 'DELETE FROM whishes WHERE ID = ' . $WhishID;
if ($conn->query($sql) === TRUE)
$message = array('msg' => 'Wunsch <b>"' . $WhishTitle . '"</b> gelöscht', 'type' => 'success');
else
$message = array('msg' => 'Uups, irgendwas ist schief gegangen!', 'type' => 'danger');
} else {
$message = array('msg' => 'Uups, irgendwas ist schief gegangen!', 'type' => 'danger');
}
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -131,22 +172,35 @@ if (isset($_POST['reservation'])) {
<strong>Simple Wishlist</strong> <strong>Simple Wishlist</strong>
</a> </a>
<div class="nav navbar-nav navbar-right"> <div class="nav navbar-nav navbar-right">
<?php <div class="d-grid gap-2 d-flex">
if ($loggedin == true) { <?php
echo (' if ($loggedin == true) {
<div class="d-grid gap-2 d-flex"> echo ('
<button type="button" class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#addItemModal">Add Item</button> <form class="form-inline" action="" method="POST">
<form action="" method="POST"> <button type="button" class="btn btn-outline-secondary my-2 my-sm-0" data-bs-toggle="modal" data-bs-target="#addItemModal">Add Item</button>
<button type="submit" class="btn btn-sm btn-outline-secondary" name= "logout">Logout</a> </form>
<form class="form-inline" action="" method="POST">
<button type="submit" class="btn btn-outline-secondary my-2 my-sm-0" name="logout">Logout</button>
</form> </form>
</div>
'); ');
} else { } else {
echo (' echo ('
<button type="button" class="btn btn-sm btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#loginModal">Login</button> <form class="form-inline" action="" method="POST">
<button type="button" class="btn btn-outline-secondary my-2 my-sm-0" data-bs-toggle="modal" data-bs-target="#loginModal">Login</button>
</form>
'); ');
} }
?> ?>
<form class="form-inline" action="" method="POST">
<select class="form-control" name="sortby" id="sortby">
<option <?php echo ($sortby == 'price_asc' ? 'selected="selected"' : ''); ?> value="price_asc">Preis aufsteigend</option>
<option <?php echo ($sortby == 'price_desc' ? 'selected="selected"' : ''); ?> value="price_desc">Preis absteigend</option>
<option <?php echo ($sortby == 'date_desc' ? 'selected="selected"' : ''); ?> value="date_desc">Datum, neu -> alt</option>
<option <?php echo ($sortby == 'date_asc' ? 'selected="selected"' : ''); ?> value="date_asc">Datum, alt -> neu</option>
<option <?php echo ($sortby == 'random' ? 'selected="selected"' : ''); ?> value="random">Zufall</option>
</select>
</form>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -162,7 +216,7 @@ if (isset($_POST['reservation'])) {
</div> </div>
'); ');
} }
wishlistMainBuilder($ListID); wishlistMainBuilder($ListID, $sortby);
?> ?>
</main> </main>
@@ -201,7 +255,7 @@ if (isset($_POST['reservation'])) {
<label for="ItemPrice" class="form-label">Preis</label> <label for="ItemPrice" class="form-label">Preis</label>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input type="text" class="form-control" id="ItemPrice" name="ItemPrice" pattern="^\d*(\.\d{2}$)?" value="" data-type="currency" placeholder="0.00€" /> <input type="text" class="form-control" id="ItemPrice" name="ItemPrice" pattern="^\d*(\,\d{2}$)?" value="" data-type="currency" placeholder="0,00€" />
<span class="input-group-text">€</span> <span class="input-group-text">€</span>
</div> </div>
@@ -257,6 +311,33 @@ if (isset($_POST['reservation'])) {
</div> </div>
'); ');
} }
if ($loggedin == true) {
echo ('
<!-- Modal Delete-->
<div class="modal fade" id="deleteModal" tabindex="-1" aria-labelledby="deleteModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalLabel">Wunsch löschen</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<h5 id="whish-title">WunschTitel</h5>
<p>Soll dieser Wunsch wirklich gelöscht werden ?</p>
</div>
<div class="modal-footer">
<form action="" method="POST">
<input type="hidden" id="WhishID" name="WhishID" value="-1">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" name="delete" class="btn btn-primary">Löschen</button>
</form>
</div>
</div>
</div>
</div>
');
}
?> ?>
<!-- Modal Reservation--> <!-- Modal Reservation-->
@@ -304,6 +385,22 @@ if (isset($_POST['reservation'])) {
modal.find('#reservationModalLabel').text('Wunsch reservieren') modal.find('#reservationModalLabel').text('Wunsch reservieren')
} }
}); });
$('#deleteModal').on('show.bs.modal', function(event) {
var resTr = $(event.relatedTarget)
var whishcard = resTr.parents().closest('.card');
var whishtitle = whishcard.find('.card-title').text();
var wishid = resTr.data('wishid')
var modal = $(this)
modal.find('#WhishID').val(wishid)
modal.find('#whish-title').text(whishtitle)
});
$(document).ready(function() {
$('#sortby').on('change', function() {
this.form.submit();
});
});
</script> </script>
</body> </body>