storno an gemneinsame DB angepasst - **** WOP ****

This commit is contained in:
rxf
2025-11-10 20:57:34 +01:00
parent e3bb5d36b9
commit ad0f7b2912
4 changed files with 105 additions and 58 deletions

View File

@@ -1,5 +1,4 @@
<?php <?php
# Hier werden die Anfragen vom Javascript verarbeitet und die
# Datenbank bedient # Datenbank bedient
include 'config_stern.php'; include 'config_stern.php';
@@ -139,6 +138,10 @@ function getAllTeilnehmer($fdatum)
// die Daten der Führungen in dem Bereich start - end // die Daten der Führungen in dem Bereich start - end
// in ein Array als ISO8601 holen // in ein Array als ISO8601 holen
// Parameter // Parameter
@@ -146,10 +149,14 @@ function getAllTeilnehmer($fdatum)
// $end -> bis zu diesem Datum // $end -> bis zu diesem Datum
// Retunrn: // Retunrn:
// Array mit den Daten in ISO8601 // Array mit den Daten in ISO8601
function getFuehrungen($start, $end) { function getFuehrungen($start, $end, $typ) {
global $db; global $db;
$erg = array(); $erg = [];
$sql_sel = "SELECT * FROM fdatum1 where datum >= '$start' AND datum <= '$end' ORDER BY datum ASC"; $table = 'fdatum1';
if ($typ == 'sonnen') {
$table = 'sonnedatum';
}
$sql_sel = "SELECT * FROM $table where datum >= '$start' AND datum <= '$end' ORDER BY datum ASC";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db)); $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
while ($row = mysqli_fetch_assoc($result)) { while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as $key => $value) { foreach ($row as $key => $value) {
@@ -262,6 +269,17 @@ function getOneDate($id) {
return $data; return $data;
} }
// aus fdatum die div. Datumsteile hole
function getTimeByDate($dt, $typ) {
global $db;
if ($typ == 'sonnen')
return '11 Uhr';
$sql_stmt = "SELECT uhrzeit FROM fdatum1 WHERE datum='$dt'";
$result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
return $data['uhrzeit'];
}
function insertteilnehmer($data) { function insertteilnehmer($data) {
global $db; global $db;
$name = $data['name']; $name = $data['name'];
@@ -473,6 +491,9 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
case 'GET_ONE_DATE': case 'GET_ONE_DATE':
$erg = getOneDate($_POST['fid']); $erg = getOneDate($_POST['fid']);
break; break;
case 'GET_TIME_BY_DATE':
$erg = getTimeByDate($_POST['dt'], $_POST['typ']);
break;
case 'GET_ALLTEILN': case 'GET_ALLTEILN':
$erg = getAllTeilnehmer($_POST['fdatum']); $erg = getAllTeilnehmer($_POST['fdatum']);
break; break;
@@ -503,7 +524,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$erg = getTeilnehmer(-1, true, false); $erg = getTeilnehmer(-1, true, false);
break; break;
case 'GET_FUEHRUNGEN': case 'GET_FUEHRUNGEN':
$erg = getFuehrungen($_POST['start'], $_POST['end']); $erg = getFuehrungen($_POST['start'], $_POST['end'], $_POST['typ']);
break; break;
case 'PUT_FDATES': case 'PUT_FDATES':
$erg = putFdates($_POST['data']); $erg = putFdates($_POST['data']);

View File

@@ -2,7 +2,7 @@
.storno { .storno {
font-size: 14px; font-size: 14px;
min-height: 500px; min-height: 550px;
position: relative; position: relative;
} }
@@ -131,3 +131,8 @@ h5 {
margin-left: 10px; margin-left: 10px;
font-size: 80%; font-size: 80%;
} }
#abbrechen {
background-color: gray;
margin-top: 40px;
}

View File

@@ -51,7 +51,7 @@
Für diese E-Mail Adresse ist keine Führung angemeldet !<br /> Für diese E-Mail Adresse ist keine Führung angemeldet !<br />
</div> </div>
<div id="anmeldid" class="col-12 col-xm-8 text-center"> <div id="anmeldid" class="col-12 col-xm-8 text-center">
Sie sind angemeldet für: <br /><br /> Sie sind angemeldet für eine <span id="fart">Sternführung</span> am: <br /><br />
<div id="anmeldung"> <div id="anmeldung">
2022-07-12 22:00 Uhr 4 Personen 2022-07-12 22:00 Uhr 4 Personen
</div> </div>

View File

@@ -45,14 +45,33 @@ $(document).ready(() => {
return await response.json(); return await response.json();
} }
// Wochentag aus integer Datum extrahieren
function getWochentag(datumInt) {
const d = new Date(
Math.floor(datumInt / 10000), // Jahr
Math.floor((datumInt % 10000) / 100) - 1, // Monat (0-basiert)
datumInt % 100 // Tag
);
return ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"][d.getDay()];
}
// Aus dem integer Führungsdatum (aus anmeldungen) den Wochentag und
// die Uhrzeit aus der Tabelle fdatum 1 holen
const getFuhrzeit = async (dt, typ) => {
return await fetchFromDbase({ cmd: 'GET_TIME_BY_DATE', dt: dt, typ: typ })
}
// Das Führungsdatum extrahieren // Das Führungsdatum extrahieren
const buildDatum = async (tn, short) => { const buildDatum = async (tn, short) => {
const person = tn.anzahl === '1' ? 'Person' : 'Personen' const person = tn.anzahl === '1' ? 'Person' : 'Personen'
const datum = await fetchFromDbase({cmd: 'GET_ONE_DATE', fid: tn.fid}) const uhrzeit = await getFuhrzeit(tn.fdatum, tn.typ)
if (short) { if (short) {
return `${moment(datum.datum).format('DD.MM.YYYY')}` return `${moment(tn.fdatum).format('DD.MM.YYYY')}`
} }
return `${datum.wtag}, den ${moment(datum.datum).format('DD.MM.YYYY')} um ${datum.uhrzeit} mit ${tn.anzahl} ${person}` if(tn.typ === 'sonnen') {
document.getElementById('fart').innerHTML = "Sonnenführung"
}
return `${getWochentag(tn.fdatum)}, den ${moment(tn.fdatum).format('DD.MM.YYYY')} um ${uhrzeit} mit ${tn.anzahl} ${person}`
} }
// Das Führungsdatum anzeigen // Das Führungsdatum anzeigen
@@ -90,9 +109,13 @@ $(document).ready(() => {
let start = moment() let start = moment()
start = start.add(vorlauf, 'h') start = start.add(vorlauf, 'h')
let end = moment() let end = moment()
end = end.add(months2add, 'M') let add = months2add
if (teilnehmer.typ === 'sonnen') {
add = 12
}
end = end.add(add, 'M')
const anzahl = parseInt(teilnehmer.anzahl) const anzahl = parseInt(teilnehmer.anzahl)
let fuehrungen = await fetchFromDbase({cmd: 'GET_FUEHRUNGEN', start: start.format('YYYYMMDD'), end: end.format('YYYYMMDD')}) let fuehrungen = await fetchFromDbase({ cmd: 'GET_FUEHRUNGEN', start: start.format('YYYYMMDD'), end: end.format('YYYYMMDD'), typ: teilnehmer.typ})
let r = `<label for "ftermin" class="labeltext"><strong>Umbuchung auf</strong></label><br /><select name="ftermin" id="ftermin"><option>-- Bitte wählen Sie ein Datum aus--</option>` let r = `<label for "ftermin" class="labeltext"><strong>Umbuchung auf</strong></label><br /><select name="ftermin" id="ftermin"><option>-- Bitte wählen Sie ein Datum aus--</option>`
for (let f of fuehrungen) { for (let f of fuehrungen) {
if (f.datum == teilnehmer.fdatum) { if (f.datum == teilnehmer.fdatum) {
@@ -104,7 +127,7 @@ $(document).ready(() => {
continue // wenn der Platz nicht reicht, nicht anzeigen continue // wenn der Platz nicht reicht, nicht anzeigen
} }
r += `<option id=${f.id} value=${f.datum}>` r += `<option id=${f.id} value=${f.datum}>`
r += `${f.wtag.substring(0,2)} , ${moment(f.datum).format('DD.MM.YYYY')} ${f.uhrzeit} ` r += `${getWochentag(f.datum).substring(0, 2)} , ${moment(f.datum).format('DD.MM.YYYY')} ${await getFuhrzeit(f.datum, teilnehmer.typ)} `
r += `Frei ${(maxVisitors - count) > 0 ? maxVisitors - count : 0}</option>` r += `Frei ${(maxVisitors - count) > 0 ? maxVisitors - count : 0}</option>`
} }
r += '</select>' r += '</select>'
@@ -226,8 +249,6 @@ Sehr geehrte Dame, sehr geehrter Herr,
${fdatum} ${fdatum}
Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit.
Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist
und die Führung ausfällt, erhalten Sie bis spätestens eine Stunde vor Führungsbeginn und die Führung ausfällt, erhalten Sie bis spätestens eine Stunde vor Führungsbeginn
eine Email. Sie können sich dann gerne zu einer anderen Führung neu anmelden. eine Email. Sie können sich dann gerne zu einer anderen Führung neu anmelden.