Wochentag
// $dat -> Datum
// $ti -> Uhrzeit
// Return: Datuns/Zeit-String
function buildDate($wt,$dat,$ti) {
$dat = preg_replace('#^(\d{4})(\d{2})(\d{2})$#', '\3.\2.\1', $dat);
$r = substr($wt,0,2) . ", " . $dat . " " . $ti;
return $r;
}
function holdasdatum($fid) {
global $db;
$sql_sel = "SELECT datum FROM fdatum1 where id = '$fid'";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
$data = $result->fetch_row()[0];
return intval($data);
}
// Aus der DB aus der Table 'fdatum' den Eintrag für $fid holen
// und als Datum/Zeit-String übergeben
// Parameter:
// $fid -> id des Führungsdatums in der Datenbank-Tabelle
// Return: Datum/zeit-String
function holDate($fid) {
global $db;
$sql_sel = "SELECT wtag, datum, uhrzeit FROM fdatum1 where id = '$fid'";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
$ret = array();
$ret[] = $data['wtag'];
$ret[] = $data['datum'];
$ret[] = $data['uhrzeit'];
$ret[] = buildDate($data['wtag'], $data['datum'], $data['uhrzeit']);
return $ret;
}
// die Daten der nächsten Führungen für $monthstoadd Monate in ein Array holen
// Parameter -
// Retunrn: Array mit allen Werte aus der Table
function getNextFuehrungen() {
global $db, $vorlauf, $monthstoadd;
$erg = array();
$toadd = '+' . $vorlauf . 'hour';
$dt = new DateTime($toadd);
$datum_heute = $dt->format('Ymd');
$enddatum = new DateTime('now');
$enddatum->modify($monthstoadd);
$enddatum = new DateTime('2022-03-05'); //<<<<<<<<<<<<<<<<<<<<<<
$enddatum = $enddatum->format('Ymd');
$sql_sel = "SELECT * FROM fdatum1 where datum >='$datum_heute' && datum <= '$enddatum' order by datum ASC";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as $key => $value) {
$entry[$key] = $value;
}
$erg[] = $entry;
}
return $erg;
}
// 'select'-Tag für die Führungen bauen
// Paramter:
// $fuehrungen -> Array mit den kommenden Führungen
// Return: String mit dem HTML-Code
function bauNextFuehrungen($fuehrungen, $maxP, $selected) {
$r = "" .
"";
return $r;
}
// Zählen, wieviele Personen zu einem Führungstermin angemeldet sind
// Parameter:
// $fid -> id des Führungsdatum
// Return: Anzahl der Personen
function getCountsPerDate($fdate) {
global $db;
$sql_stmt = "SELECT SUM(anzahl) AS count FROM anmeldungen WHERE fdatum='$fdate'";
$result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
return $data['count'];
}
// prüfen, og der User schon eine Buchung gemacht hat
// Geprüft wird die Email-Adresse. Es werden nur Buchungen in
// Zukunft geprüft.
function isDoppelBuchung($email) {
global $db;
$ret = [];
$ret['doppelt'] = false;
$now = date('Ymd');
$sql_stmt = "SELECT * FROM anmeldungen WHERE email = '$email' AND fdatum >= $now";
$result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
return $data;
}
// die kompletten Daten eines Teilnehmers anhand der ID ais der DB holen
?>
// Hier werden alle notwendigen Variablen eingesammelt ------------------------
if (isset($_POST['submit'])) {
$stern_name = $_REQUEST['name'];
$stern_vorname = $_REQUEST['vorname'];
$stern_strasse = $_REQUEST['strasse'];
$stern_ort = $_REQUEST['ort'];
$stern_plz = $_REQUEST['plz'];
$stern_tel = $_REQUEST['tel'];
$stern_mail = $_REQUEST['mail'];
$stern_teil = $_REQUEST['teil'];
$xxx = array();
$xxx[] = holDate($_REQUEST['ftermin']);
$stern_datum_date = holdasdatum($_REQUEST['ftermin']);
$stern_datum = $xxx[0][3];
$stern_fdlink = $_REQUEST['ftermin'];
$stern_submit = $_REQUEST['submit'];
$stern_actionstern = $_REQUEST['stern_actionstern'];
$stern_remarks = $_REQUEST['remarks'];
} else {
$stern_name = '';
$stern_vorname = '';
$stern_strasse = '';
$stern_ort = '';
$stern_plz = '';
$stern_tel = '';
$stern_mail = '';
$stern_teil = '';
$stern_datum = '';
$stern_datum_date = 19000101;
$stern_submit = '';
$stern_fdlink = '';
$stern_actionstern = '';
$stern_remarks = '';
}
// Hier werden default Werte gesetzt ------------------------
$stern_error_msg = '';
$stern_meldung = '';
$stern_errors = 0;
$andererTermin = "bitte wählen Sie einen anderen Termin";
// ----------------------------------------------------------
switch ($stern_actionstern) {
case 'senden':
// Hier wir geprüft, ob alle Felder ausgefüllt sind ------------------------
if (trim($stern_name) == '') {
$stern_error_msg .= 'Bitte geben Sie Ihren Namen ein. ';
$stern_errors++;
}
if (trim($stern_strasse) == '') {
$stern_error_msg .= 'Bitte geben Sie eine Straße ein. ';
$stern_errors ++;
}
if (trim($stern_plz) == '') {
$stern_error_msg .= 'Bitte geben Sie eine Postleitzahl ein. ';
$stern_errors ++;
}
if (! preg_match("/^[0-9]{5}$/", $stern_plz)) {
$stern_error_msg .= 'Bitte geben Sie bei der Postleitzahl mindestens fünf Ziffern und keine Buchstaben ein. ';
$stern_errors ++;
}
if (trim($stern_ort) == '') {
$stern_error_msg .= 'Bitte geben Sie einen Ort ein. ';
$stern_errors ++;
}
if (!preg_match("/^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}/",
strtolower($stern_mail))) {
$stern_error_msg .= 'Bitte geben Sie eine gültige E-Mail-Adresse ein. ';
$stern_errors++;
}
$belegt = getCountsPerDate($stern_datum_date);
$rest = $maxBesucher-$belegt;
if((trim($stern_teil) + $belegt) > $maxBesucher) {
if ($rest <= 0) {
$stern_error_msg .= "Die Führung ist ausgebucht, $andererTermin ";
} else {
$stern_error_msg .= "Die Führung ist schon mit $belegt Personen belegt, es ";
if ($rest == 1) {
$stern_error_msg .= "kann nur noch 1 Person ";
} else {
$stern_error_msg .= "können höchstens noch $rest Personen ";
}
$stern_error_msg .= "angemeldet werden. ";
}
$stern_errors++;
}
$teilnehmer = isDoppelBuchung($stern_mail);
if($teilnehmer != null) {
$stern_error_msg = "Die ist eine Doppelbuchung. Sie wird nicht gespeichert.
Wenn Sie Ihre ursprünglichen Buchung ändern oder stornieren wollen, so senden Sie bitte eine Email an anmeldung@sternwarte.de
";
$stern_errors++;
}
$nun = strtotime("now");
list($w,$d,$t,$s) = holDate($stern_fdlink);
$fz = strtotime("$d" . "t" . substr($t,0,2) . "00");
$dauer = ($fz - $nun) / 3600;
if ($dauer <= $vorlauf) {
$stern_error_msg .= "Die Anmeldung muss spätestens $vorlauf Stunden vor Beginn der Führung erfolgen - $andererTermin. ";
$stern_errors++;
}
if ($stern_errors == 0) {
$sql_stmt = "INSERT INTO anmeldungen (name, vorname, strasse, plz, stadt, telefon, email, anzahl, fid, remarks, angemeldet, fdatum)" .
" values('$stern_name', '$stern_vorname', '$stern_strasse', '$stern_plz', '$stern_ort', '$stern_tel'," .
"'$stern_mail', '$stern_teil', '$stern_fdlink', '$stern_remarks', CURDATE(), '$stern_datum_date')";
$ins = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$sql_stmt = "UPDATE fdatum1 SET count = count + '$stern_teil' WHERE datum = '$stern_datum_date'";
$ins = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$person = $stern_teil == 1 ? "Person" : "Personen";
$body = "\r\nName, Vorname: $stern_name, $stern_vorname \r\n" .
"Strasse: $stern_strasse \r\n" .
"Ort: $stern_plz $stern_ort \r\n" .
"Telefon: $stern_tel \r\n" .
"E-mail: $stern_mail \r\n" .
"Gewünschter Termin: $stern_datum \r\n" .
"Teilnehmerzahl: $stern_teil \r\n" .
"Bemerkungen: $stern_remarks \r\n";
$bodya = "Sehr geehrte Dame, sehr geehrter Herr, \r\n\r\n" .
"hiermit bestätigen wir Ihre Anmeldung zu einer Führung auf der Sternwarte Welzheim für\r\n\r\n" .
"$stern_vorname $stern_name am " . preg_replace("/(\d+) Uhr/","um $0",$stern_datum) . " für $stern_teil $person " .
// $stern_teil == 1 ? "Person" : "Personen" .
".\r\n\r\n" .
"Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit. \r\n".
"Ohne diese Bestätigung und 2G-Zertifikat erfolgt ausnahmslos k e i n Einlass.\r\n\r\n" .
"Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist \r\n" .
"und die Führung ausfällt, bitten wir Sie um eine neue Anmeldung.\r\n\r\n" .
"Die Hygienevorschriften sind zu beachten: die Teilnehmer müssen eine medizinische Maske,\r\n" .
"die Mund u n d Nase bedeckt, tragen und den vorgeschriebenen Abstand halten.\r\n\r\n" .
"Nicht teilnehmen dürfen Personen, die in den letzten vierzehn Tagen Kontakt mit einem Coronavirus-Infizierten \r\n" .
"hatten oder Infektionssymptome zeigen.\r\n\r\n" .
"Sollten Sie Fragen haben oder die Anmeldung stornieren wollen, senden Sie bitte eine Email an anmeldung@sternwarte-welzheim.de \n\r\n" .
"Mit freundlichen Grüßen\r\n\r\n" .
"Beobachterteam der Sternwarte Welzheim\r\n\r\n" .
"www.sternwarte-welzheim.de";
$betreff = "Anmeldung zu einer Führung auf der Sternwarte Welzheim";
$betreffBeo = "Anmeldung zur Führung in Welzheim am $stern_datum";
mb_internal_encoding('UTF-8');
$betreff = mb_encode_mimeheader($betreff, 'UTF-8', 'Q');
// Mail an den Anfragenden
sendmail($betreff, $defaultabsender, $bodya, [], ['rexfue@gmail.com'], [$stern_mail]);
// Mail an einige BEOs und an die Liste
$beoliste = array(
//"andrea.ess@t-online.de",
//"sonderfuehrung@sternwarte-welzheim.de",
//"martin.gertz@gmx.de",
// "schittenhelm.klaus@gmx.de",
// "planetarium@stuttgart.de",
//"info@planetarium-stuttgart.de",
//"HUK@observatory-stuttgart.de",
"anmeldung@sternwarte-welzheim.de",
);
sendmail($betreffBeo, $defaultabsender, $body, $beoliste, [], ["rexfue@gmail.com"] );
$stern_meldung = "
Vielen Dank für Ihre Anmeldung.
Wir freuen uns über Ihren Besuch auf der Sternwarte Welzheim am
" .
preg_replace('/(\d+) Uhr/','um $0',$stern_datum) .
" mit $stern_teil $person.
Wir haben Ihnen die Anmelde-Bestätigung per Email zugesandt.
';
}
// Wenn ein Fehler aufgetreten ist ($errors != 0), folgt jetzt der default Teil
// d.h. das Eingabeformular wird nochmals angezeigt mit einer Fehlermeldung.
// ----------------------------------------------------------------------------
default:
?>
Anmeldung zu einer Führung auf der Sternwarte Welzheim
Wegen der Corona-Pandemie dürfen nur angemeldeten Personen an einer Führung in der
Sternwarte Welzheim teilnehmen. Bitte geben Sie unten Ihre Kontaktdaten an.
Nach Maßgabe der aktuellen Corona-Verordnung werden Ihre Daten vier Wochen gespeichert
und anschließend gelöscht.
Zur Zeit git die 2G-Regel, d.h. es haben nur Personen Zutritt, die nachweislich gegen Corona geimpft oder genesen sind.
Ein 2G-Zertifikat muss vorgelegt werden.
Aus diesem Grund können auch nur Kinder im schulpflichtigen Alter die Sternwarte besuchen.
An einer Führung dürfen nur maximal Personen teilnehmen, damit der
vorgeschriebene Sicherheitsabstand eingehalten werden kann. Sollte die von
Ihnen ausgewählte Führung bereits ausgebucht sein, wählen Sie bitte einen anderen Termin.
Wenn Sie alle Felder ausgefüllt und abgeschickt haben (mit dem "Anmeldung senden"-Knopf),
erhalten Sie eine Anmeldebestätigung per e-mail. Diese bitte unbedingt zur Führung
ausgedruckt oder in digitaler Form mitbringen!
Ohne die mitgebrachte Anmeldebestätigung und dem Impfzertifikat erfolgt ausnahmslos
k e i n Einlass.
Die Hygienevorschriften sind zu beachten: Jeder Teilnehmer muss eine
medizinische Maske, die Mund und Nase bedeckt, tragen
und den vorgeschriebenen Abstand einhalten.
Nicht teilnehmen dürfen Personen, die in den letzten vierzehn Tagen Kontakt
mit einem Coronavirus-Infizierten hatten oder Infektionssymptome zeigen.
Die Führungen auf der Sternwarte Welzheim finden nur bei
sternklarem Himmel statt. Sollte die Führung wegen des Wetters ausfallen, bitten wir
Sie, sich für einen neuen Termin nochmals anzumelden.
Bitte beachten Sie, dass der Weg zur Sternwarte Welzheim mit
Kraftfahrzeugen nicht befahren werden darf. Sie können
Ihre Fahrzeuge auf dem Parkplatz der Sternwarte abstellen. Von hier
führt ein 430 m langer Fußweg zur Sternwarte. Die Temperatur in den
Beobachtungskuppeln entspricht der Außentemperatur. Besonders in
kalten Winternächten ist warme Bekleidung und warmes Schuhwerk
dringend zu empfehlen.
Die Fernrohre in den Beobachtungskuppeln sind nur über Treppen zu
erreichen. Es besteht leider keine Möglichkeit, Rollstühle in die
Kuppeln mitzunehmen. Für Kleinkinder sind Sternführungen nicht
geeignet.
Betrieb und Arbeit auf der Sternwarte erfolgen ehrenamtlich.
Unterhalt und Aktivitäten auf der Sternwarte sind nur durch
Ihre Unterstützung möglich. Wir bitten daher um eine ensprechende Spende.
Anmeldung:(Alle Felder mit '*' müssen ausgefüllt werden)
// ----------------------------------------------------------------------------
} // Ende switch($page)
?>