Files
sternwarte_server/html/sternwarte/sofianmeldung.php
2025-11-02 22:52:08 +01:00

493 lines
25 KiB
PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Sternwarte Welzheim</title>
<!--[if IE 5]>
<link href="css/ie5.css" rel="stylesheet" type="text/css"/>
<![endif]-->
<!--[if IE]>
<style type="text/css">
<link href="css/ie.css" rel="stylesheet" type="text/css"/>
</style>
<![endif]-->
<link href="css/jquery-ui.min.css" rel="stylesheet" type="text/css"/>
<link href="css/sternwarte1.css" rel="stylesheet" type="text/css"/>
<script src="javascript/jquery-1.11.0.min.js"></script>
<script src="javascript/jquery-ui-1.10.0.custom.min.js"></script>
<script src="javascript/sternwarte.js"></script>
</head>
<body class="thrColFixHdr">
<div id="container">
<?php include 'header.php'; ?>
<?php include 'navi.php'; ?>
<div id="sidebar2">
<?php include 'fdatum.php'; ?>
<?php include 'himmelerg.php'; ?>
</div>
<div id="datenschutz"></div>
<?php
include 'phpmailer/dosendmail.php';
?>
<?php
// 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 uhrzeit FROM sofizeit where id = '$fid'";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
$ret = substr($data['uhrzeit'],0,5);
return $ret;
}
// für die SoFi die Zeitslots mit der jeweiligen Anzahl der Besucher aus der DB hole
// Parameter -
// Return: Array mit den Daten
function getNextFuehrungen() {
global $db;
$sql_sel = "SELECT * FROM sofizeit order by uhrzeit 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
// $maxP -> max. zugelassen Anzahl Besucher
// $selected ->
// Return: String mit dem HTML-Code
function bauNextFuehrungen($fuehrungen, $maxP, $selected) {
$r = "<label for='ftermin' class='labeltext'>" .
"<strong>Führungszeit</strong></label>" .
"<select name='ftermin' id='ftermin'>";
foreach ($fuehrungen as $f) {
$count = $f['besucher'];
$r .= "<option value='" . $f['id'] . "'";
if($count >= $maxP) {
$r .= "disabled";
}
if($selected && ($f['id'] == $selected)) {
$r .= ' selected="selected" ';
}
$r .= ">" . substr($f['uhrzeit'],0,5);
$r .= " &nbsp;&nbsp;&nbsp;Frei: ";
$r .= $maxP-$count;
$r .= "</option>";
}
$r .= "</select>";
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 besucher FROM sofizeit WHERE id='$fdate'";
$result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$data = mysqli_fetch_assoc($result);
return $data['besucher'];
}
// 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
?>
<div id="mainContent">
<?
// 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'];
$stern_zeit = holDate($_REQUEST['ftermin']);
$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_zeit = '';
$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.<br />';
$stern_errors++;
}
// if (trim($stern_strasse) == '') {
// $stern_error_msg .= 'Bitte geben Sie eine Straße ein.<br />';
// $stern_errors ++;
// }
//
// if (trim($stern_plz) == '') {
// $stern_error_msg .= 'Bitte geben Sie eine Postleitzahl ein.<br />';
// $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.<br />';
// $stern_errors ++;
// }
// if (trim($stern_ort) == '') {
// $stern_error_msg .= 'Bitte geben Sie einen Ort ein.<br />';
// $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.<br />';
$stern_errors++;
}
$belegt = getCountsPerDate($stern_fdlink);
$rest = $maxBesucher-$belegt;
if((trim($stern_teil) + $belegt) > $maxBesucher) {
if ($rest <= 0) {
$stern_error_msg .= "Die Führung ist ausgebucht, $andererTermin<br />";
} 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.<br />";
}
$stern_errors++;
}
$teilnehmer = isDoppelBuchung($stern_mail);
if($teilnehmer != null) {
$stern_error_msg = "Dies ist eine Doppelbuchung. Sie wird <strong>nicht</strong> gespeichert.<br /><br />
Wenn Sie Ihre ursprüngliche Buchung ändern oder stornieren wollen, so senden Sie bitte eine Email an <a href='mailto:anmeldung@sternwarte.de'>anmeldung@sternwarte.de</a><br />
<p><a class='button' href='/index.php'>Abbruch</a></p>";
$stern_errors++;
}
$nun = new DateTime("now");
$oct24 = new DateTime("2022-10-24");
if( $nun >= $oct24) {
$stern_error_msg .= "Die Anmeldung muss <strong>spätestens</strong> bis zum 24.10.2022 erfolgen.";
$stern_errors++;
}
if ($stern_errors == 0) {
$sql_stmt = "INSERT INTO sofibesucher (name, vorname, strasse, plz, stadt, telefon, email, anzahl, fid, remarks, angemeldet)" .
" values('$stern_name', '$stern_vorname', '$stern_strasse', '$stern_plz', '$stern_ort', '$stern_tel'," .
"'$stern_mail', '$stern_teil', '$stern_fdlink', '$stern_remarks', CURDATE())";
$ins = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
$sql_stmt = "UPDATE sofizeit SET besucher = besucher + '$stern_teil' WHERE id = '$stern_fdlink'";
$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_zeit \r\n" .
"Personen: $stern_teil \r\n" .
"Bemerkungen: $stern_remarks \r\n";
$bodya_txt = "Sehr geehrte Dame, sehr geehrter Herr, \r\n\r\n" .
"hiermit bestätigen wir Ihre Anmeldung zur Sonnenfinsternis-Führung am 25. Oktober 2022 " .
"auf der Sternwarte Welzheim für\r\n\r\n" .
"$stern_vorname $stern_name um $stern_zeit Uhr " .
"für $stern_teil $person." .
"\r\n\r\n" .
"Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit. \r\n".
"Ohne diese Bestätigung erfolgt ausnahmslos k e i n Einlass.\r\n\r\n" .
"Die Führung findet NUR bei klarem Himmel statt. Falls der Himmel bedeckt ist " .
"und die Führung ausfällt, erhalten Sie bis spätestens eine Stunde vor Beginn der Finsternis " .
"eine Email.\r\n\r\n" .
"Allen Teilnehmern/-innen wird dringend empfohlen, eine FFP2-Maske, die Mund und Nase " .
"bedeckt, zu tragen.\r\n\r\n" .
"Sollten Sie Fragen haben oder die Anmeldung stornieren wollen, senden Sie bitte eine Email" .
"an anmeldung@sternwarte-welzheim.de \r\n\r\n" .
"Mit freundlichen Grüßen\r\n\r\n" .
"Beobachterteam der Sternwarte Welzheim\r\n\r\n" .
"www.sternwarte-welzheim.de";
$bodya_html = "<p>Sehr geehrte Dame, sehr geehrter Herr,</p>" .
"<p>hiermit bestätigen wir Ihre Anmeldung zur Sonnenfinsternis-Führung am 25. Oktober 2022 " .
"auf der Sternwarte Welzheim für</p>" .
"<p style='text-align: center;'>$stern_vorname $stern_name um $stern_zeit Uhr " .
"für $stern_teil $person.</p>" .
"<p>Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit.<br />".
"Ohne diese Bestätigung erfolgt ausnahmslos <strong>kein</strong> Einlass.</p>" .
"<p>Die Führung findet <strong>nur</strong> bei klarem Himmel statt. Falls der Himmel bedeckt ist " .
"und die Führung ausfällt, erhalten Sie bis spätestens eine Stunde vor Beginn der Finsternis " .
"eine Email.<p>" .
"<p>Allen Teilnehmern/-innen wird dringend empfohlen, eine FFP2-Maske, die Mund und Nase " .
"bedeckt, zu tragen.</p>" .
"<p>Sollten Sie Fragen haben oder die Anmeldung stornieren wollen, senden Sie bitte eine Email" .
" an <a href='mailto:anmeldung@sternwarte-welzheim.de'>anmeldung@sternwarte-welzheim.de</a></p>" .
"<p>Mit freundlichen Grüßen<br />" .
"Beobachterteam der Sternwarte Welzheim<br />" .
"<a href='www.sternwarte-welzheim.de'>www.sternwarte-welzheim.de</a>";
// Mail an den Anfragenden
mb_internal_encoding('UTF-8');
$betreff = "Anmeldung zur Sonnenfinsternis-Führung auf der Sternwarte Welzheim";
$betreff = mb_encode_mimeheader($betreff, 'UTF-8', 'Q');
sendmail($betreff, $defaultabsender, $bodya_txt, [], ['anmeldung@sternwarte-welzheim.de'], [$stern_mail], $bodya_html);
// 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",
);
$betreffBeo = "Anmeldung zur SoFi-Führung um $stern_zeit";
$betreffBeo = mb_encode_mimeheader($betreffBeo, 'UTF-8', 'Q');
sendmail($betreffBeo, $defaultabsender, $body, $beoliste, [], ["rexfue@gmail.com"]);
$stern_meldung = "<p>Vielen Dank für Ihre Anmeldung. <br /><br />
Wir freuen uns über Ihren Besuch auf der Sternwarte Welzheim zur Sonnenfinsternis <br />
<div style='text-align:center;'>" . "am 25. Oktober 2022 um $stern_zeit" .
" Uhr mit $stern_teil $person.
</div> <br />
Wir haben Ihnen die Anmelde-Bestätigung per Email zugesandt (bitte sehen Sie ggf. auch in Ihrem Spam-Ordner nach).</p>
<p><a class='button' href='/index.php'>Zurück</a></p>";
// Antwortseite
?>
<?PHP echo $stern_meldung;
?>
<?PHP
// Ende Antwortseite
break;
} // Ende if ($errors == 0)
else {
// Layout der Fehlermeldung
$stern_error_msg = '<div id="fehler">' . $stern_error_msg . '</div>';
}
// Wenn ein Fehler aufgetreten ist ($errors != 0), folgt jetzt der default Teil
// d.h. das Eingabeformular wird nochmals angezeigt mit einer Fehlermeldung.
// ----------------------------------------------------------------------------
default:
?>
<div id="sofitxt">
<h1>Anmeldung zur partiellen Sonnenfinsternis am 25. Oktober</h1>
<p>Diese partielle Sonnenfinsternis dauert in Welzheim von 11:13 Uhr bis 13:11 Uhr.
Zur Beobachtung führen wir Zeitscheiben ein, für die Sie sich jeweils anmelden können.
Jede Zeitscheibe hat eine Dauer von 30min, in dieser Zeit können Sie einen Blick durch das Fernrohr werfen. <br />
Außerhalb Ihrer gebuchten Zeitscheibe können Sie selbstverständlich vor der Sternwarte
die Finsternis weiter beobachten.
</p>
<p>
<strong>ACHTUNG: <br />Niemals direkt und ungeschützt in die Sonne sehen! Schwere Augenschäden bis
zur vollkommenen Erblindung drohen! </strong>Schon gar nicht ein Fernglas oder Teleskop auf die Sonne richten,
wenn es nicht über spezielle Filter oder entsprechende Sonnenbeobachtungseinrichtungen verfügt. Sonnenbrillen,
berußte Gläser, geschwärzte Filme, CDs, Solarienbrillen, Verpackungsfolien, Neutral- oder Polarisationsfilter
bieten keinen ausreichenden Schutz. Im Fachhandel gibt es spezielle Sonnensichtbrillen (auch „Sofi-Brillen“ genannt)
zu beziehen, die nur zwei bis drei Euro kosten.
</p>
</div>
<p>
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.
</p>
<p>
An einer Führung dürfen nur maximal <?php echo $maxBesucher;?> Personen teilnehmen.
Sollte die von Ihnen ausgewählte Führung bereits ausgebucht sein, wählen Sie bitte
einen anderen Termin.
</p>
<p>
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!
<div style="text-align:center;"><strong>Ohne die mitgebrachte Anmeldebestätigung erfolgt ausnahmslos
k e i n Einlass.</strong>
</div>
</p>
<p>
Allen Teilnehmern/-innen wird dringend empfohlen, eine
FFP2-Maske, die Mund <strong>und</strong> Nase bedeckt, zu tragen.
</p>
<hr/>
<p>
Bitte beachten Sie, dass der Weg zur Sternwarte Welzheim <strong>mit
Kraftfahrzeugen nicht befahren werden darf</strong>. Sie können
Ihre Fahrzeuge auf dem Parkplatz der Sternwarte abstellen. Von hier
führt ein 430 m langer Fußweg zur Sternwarte.
</p>
<p>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.</p>
<p>Betrieb und Arbeit auf der Sternwarte erfolgen ehrenamtlich.
Unterhalt und Aktivit&auml;ten auf der Sternwarte sind nur durch
Ihre Unterstützung m&ouml;glich. Wir bitten daher um eine ensprechende Spende.
</p>
<p>
<?PHP echo $stern_error_msg ?>
</p>
<strong>Anmeldung:</strong>
<span class="textklein">(Alle Felder mit '*' müssen ausgefüllt werden)</span><br />
<br />
<div id="formular" class="fltrt">
<form action="sofianmeldung.php#form" method="post">
<?
echo bauNextFuehrungen(getNextFuehrungen(), $maxBesucher, $stern_fdlink);
?>
<br />
<div id="unterfuedat" class="textklein">Bitte beachten Sie, dass eine
Anmeldung muss bis spätestens 24.Oktober 2022 erfolgt sein muss!<br/>
Schon belegte Termine können nicht ausgewählt werden (sie werden grau dargestellt).
</div>
<br /><br />
<label for="name" class="labeltext">Zuname *</label>
<input
type="text" maxlength="50" name="name"
value="<? echo $stern_name; ?>" id="name" class="textfeld200"/> <br/>
<label for="vorname" class="labeltext">Vorname</label>
<input
type="text" maxlength="50" name="vorname"
value="<? echo $stern_vorname; ?>" id="vorname" class="textfeld200"/><br/>
<br/>
<label for="strasse" class="labeltext"> Straße / Haus-Nr.</label>
<input type="text" maxlength="60" name="strasse"
value="<? echo $stern_strasse; ?>" id="strasse" class="textfeld200"/><br/>
<label for="ort" class="labeltext">PLZ / Ort</label>
<input
type="text" maxlength="5" name="plz" id="plz"
value="<?php echo $stern_plz; ?>" class="textfeld20"/>
<input
type="text" maxlength="60" name="ort" id="ort"
value="<?php echo $stern_ort; ?>" class="textfeld100"/> <br/>
<label
for="tel" class="labeltext"> Telefonnummer *</label>
<input
type="text" maxlength="50" name="tel" value="<? echo $stern_tel; ?>"
id="tel" class="textfeld200"/> <br/>
<br />
<label for="mail" class="labeltext">E-Mail-Adresse *</label>
<input
type="text" maxlength="120" name="mail"
value="<? echo $stern_mail; ?>" id="mail" class="textfeld200"/><br />
<br />
<label for="teil" class="labeltext">Anzahl Personen *<br/> <span
class="textklein">(max. <? echo $maxBesucher ?> Personen)</span></label>
<input type="number" step="1" min="1" max="<? echo $maxBesucher ?>" maxlength="120"
name="teil" value="<? echo $stern_teil == "" ? "1" : $stern_teil; ?>" id="teil" class="textfeld20"/> <br/>
<br />
<div id="bemerk">
<label for="remarks" class="labeltext">Bemerkungen</label>
<textarea name="remarks" id="remarks" rows="2" cols="40" class="textfeld200"></textarea><br/>
<br />
</div>
Die Führung findet nur bei <b>klarem</b> Wetter statt.<br/>
<p>
Sollten Sie eine Änderung oder Stornierung ihrer Anmeldung wünschen, senden Sie bitte eine E-mail an <a href="mailto:anmeldung@sternwarte-welzheim.de">anmeldung@sternwarte-welzheim.de</a>.
Wenn Sie an dem gebuchten Termin verhindert sind, bitten wir Sie, rechtzeitig eine Abmeldung zu senden.
</p>
<p>
<strong>Das Betreten der Sternwarte erfolgt auf eigene
Gefahr. Die Sternführung wird von ehrenamtlichen
Kräften durchgeführt. Bei Ausfall einer Führung kann kein Schadenersatz
geleistet werden.</strong>
</p>
<div id="sendebutton">
<input type="hidden" name="stern_actionstern" value="senden">
<input type="submit" name="submit" value="Anmeldung senden" class="inputtext">
</div>
<button type="button" class="inputtext cancel" onclick="window.location.href='/index.php';">Abbruch</button>
<br /><br />
<p>
Hinweis zum Datenschutz: <a href="" id="dschu">Datenschutzerklärung</a>
</p>
<p class="lastchange">Letzte Änderungen: 2022-08-17 rxf</p>
</form>
</div>
<?
// ----------------------------------------------------------------------------
} // Ende switch($page)
?>
<!-- end #mainContent -->
</div>
<!-- Dieses clear-Element sollte direkt auf das #mainContent-div folgen, um das #container-div anzuweisen, alle untergeordneten Floats aufzunehmen. -->
<br class="clearfloat"/>
<!-- end #container -->
</div>
</body>
</html>