Sort selectable and Date added. Delete also works
This commit is contained in:
@@ -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
|
||||||
|
@@ -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
127
index.php
@@ -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>
|
||||||
|
Reference in New Issue
Block a user