hallo,
ich bin gerade an einem Projekt dran und weiß nicht weiter...
es gibt da eine ferienwohnung für die ich buchungsanträge stellen mag.
in der datenbank habe ich die gebuchten tage eingetragen.
in der ersten anfrage soll ermittelt werden ob die angefragten tage frei sein oder nicht.
wenn sie frei sind soll es zu einem weiteren formular gehen, wo man seine persönlichen daten eingeben muss...
jetzt habe ich schon 4 funktionen (verfuegbarkeitF(),verfuegbarkeitP(), buchungsanfrage(), BuchungsanfrageVerarbeiten() ) und es klappt nicht mehr mit den weiterleitungen...
kann sich das vielleicht jemand ansehen und mir einen tipp geben...
meine seite wird mit get anweisungen dynamisch aufgerufen...
um euch ein bild machen zu können hab ich das ganze hochgeladen...
Anschauungsmaterial
wäre echt super wenn da jemand durchblickt...
ich bin gerade an einem Projekt dran und weiß nicht weiter...
es gibt da eine ferienwohnung für die ich buchungsanträge stellen mag.
in der datenbank habe ich die gebuchten tage eingetragen.
in der ersten anfrage soll ermittelt werden ob die angefragten tage frei sein oder nicht.
wenn sie frei sind soll es zu einem weiteren formular gehen, wo man seine persönlichen daten eingeben muss...
jetzt habe ich schon 4 funktionen (verfuegbarkeitF(),verfuegbarkeitP(), buchungsanfrage(), BuchungsanfrageVerarbeiten() ) und es klappt nicht mehr mit den weiterleitungen...
kann sich das vielleicht jemand ansehen und mir einen tipp geben...
meine seite wird mit get anweisungen dynamisch aufgerufen...
um euch ein bild machen zu können hab ich das ganze hochgeladen...
Anschauungsmaterial
Code:
<?php if(isset($_POST["pruefen"])){ verfuegbarkeitP(); } elseif(isset($_POST["anfragen"])){ BuchungsanfrageVerarbeiten(); } else { verfuegbarkeitF(); } #FUNKTION AUSGEBEN BEGINN: function verfuegbarkeitF($ap="",$anTag="", $anMonat="",$anJahr="",$abTag="",$abMonat="",$abJahr="",$fehlversuche="0") { /* ERZEUGT DIE DATEN FÜR DAS AUTO FILL IN */ if($anTag === ''){ $anTag = date('j'); } if($anMonat === ''){ $anMonat = date('n'); } if($anJahr === ''){ $anJahr = date('Y'); } if($abTag === ''){ $morgen = mktime(0, 0, 0, 0, date("d")+1, 0); $abTag = date('j',$morgen); } if($abMonat === ''){ $abMonat = date('n'); } if($abJahr === ''){ $abJahr = date('Y'); } ?> <h3>Prüfen Sie die Verfügbarkeit</h3> <?php if($fehlversuche >= 3){ # GIBT DAS FEHLER-ARRAY BEIM DRITTEN FEHLVERSUCH AUS: if(!empty($fehlerB)){ echo "<br>"; $i = 0; foreach ($fehlerB as $k => $v) { $i++; echo "<p class='fehler_2'>Error_$i: $v</p>"; } } } if ($fehlversuche >=1){ echo "<p>Fehlversuche: $fehlversuche</p>"; } ?> <!-- EINGABEFORMULAR --> <form action="#main_header" method="post" style="margin:20px 0 15px 13px;"> <label for="ap">Unterkunft:<br> <input type="radio" name="ap" id="ap" value="AP_1" checked>Stoß im Himmel 3<br> </label> <!-- Ankunftsdatum Label und Eingabefeld --> <label class="labC" for="anreisedatum">Ankunftsdatum<br> <div id="anreisedatum" class="inpC_2" <?php if(!empty($fehlerB["anreiseDatum"])){echo"style='border:1px solid red;'";}elseif(!empty($fehlerB['dauer'])){echo"style='border:1px solid red;'";}?>> <!-- Anreisetag Label und Eingabefeld --> <lable for="anTag"><span class="hidden">Anreisetag</span> <input class="inp_die_A" <?php if(!empty($fehlerB["anTag"])){ echo "style='border:1px solid red !important;'";}?> id="anTag" name="anTag" type="number" min="1" max="31" value="<?=$anTag?>"> </lable> <!-- Ankunftsmonat Label und Eingabefeld --> <lable for="anMonat"><span class="hidden">Anreisemonat</span> - <input <?php if(!empty($fehlerB["anMonat"])){ echo "style='border:1px solid red !important;'";}?> class="inp_die_B" id="anMonat" name="anMonat" type="number" min="1" max="12" value="<?=$anMonat?>"> </lable> <!-- Ankunftsjahr Label und Eingabefeld --> <lable for="anJahr"><span class="hidden">Anreisejahr</span> - <input class="inp_die_C" <?php if(!empty($fehlerB["anJahr"])){ echo "style='border:1px solid red !important;'";}?> id="anJahr" name="anJahr" type="number" min="2015" max="2025" value="<?=$anJahr?>"> </lable> </div> </label> <span style="display:inline-block;width:9px;vertical-align:baseline;text-align:center;">/</span> <!-- Abreisedatum Label und Eingabefeld --> <label class="labC" for="abreisedatum">Abreisedatum<br> <div id="abreisedatum" class="inpC_2" <?php if(!empty($fehlerB["abreiseDatum"])){echo"style='border:1px solid red;'";}elseif(!empty($fehlerB['dauer'])){echo"style='border:1px solid red;'";}?>> <!-- Abreisetag Label und Eingabefeld --> <lable for="abTag"><span class="hidden">Abreisetag</span> <input class="inp_die_A" <?php if(!empty($fehlerB["abTag"])){ echo "style='border:1px solid red !important;'";}?> id="abTag" name="abTag" type="number" min="1" max="31" value="<?=$abTag?>"> </lable> <!-- Abreisemonat Label und Eingabefeld --> <lable for="abMonat"><span class="hidden">Abreisemonat</span> - <input class="inp_die_B" <?php if(!empty($fehlerB["abMonat"])){ echo "style='border:1px solid red !important;'";}?> id="abMonat" name="abMonat" type="number" min="1" max="12" value="<?=$abMonat?>"> </lable> <!-- Abreisejahr Label und Eingabefeld --> <lable for="abJahr"><span class="hidden">Abreisejahr</span> - <input class="inp_die_C" <?php if(!empty($fehlerB["aBJahr"])){ echo "style='border:1px solid red !important;'";}?> id="abJahr" name="abJahr" type="number" min="2015" max="2025" value="<?=$abJahr?>"> </lable> </div> </label> <input type="submit" name="pruefen" class="sendBut inpB_2" value="Prüfen"> <input type="hidden" name="fehlversuche" value="<?=$fehlversuche?>"> </form> <?php } function verfuegbarkeitP() { $fehlerB = array(); $tage = array ("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"); $monate = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); $jahre = array("2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"); /* FILTER INPUT */ !empty(filter_input(INPUT_POST, "ap", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "ap", FILTER_SANITIZE_ENCODED)) ? $ap = trim($_POST["ap"]) : $ap = ""; !empty(filter_input(INPUT_POST, "anTag", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "anTag", FILTER_SANITIZE_ENCODED)) ? $anTag = trim($_POST["anTag"]) : $anTag = ""; !empty(filter_input(INPUT_POST, "anMonat", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "anMonat", FILTER_SANITIZE_ENCODED)) ? $anMonat = trim($_POST["anMonat"]) : $anMonat = ""; !empty(filter_input(INPUT_POST, "anJahr", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "anJahr", FILTER_SANITIZE_ENCODED)) ? $anJahr = trim($_POST["anJahr"]) : $anJahr = ""; !empty(filter_input(INPUT_POST, "abTag", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "abTag", FILTER_SANITIZE_ENCODED)) ? $abTag = trim($_POST["abTag"]) : $abTag = ""; !empty(filter_input(INPUT_POST, "abMonat", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "abMonat", FILTER_SANITIZE_ENCODED)) ? $abMonat = trim($_POST["abMonat"]) : $abMonat = ""; !empty(filter_input(INPUT_POST, "abJahr", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "abJahr", FILTER_SANITIZE_ENCODED)) ? $abJahr = trim($_POST["abJahr"]) : $abJahr = ""; !empty(filter_input(INPUT_POST, "fehlversuche", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "fehlversuche", FILTER_SANITIZE_ENCODED)) ? $fehlversuche = trim($_POST["fehlversuche"]) : $fehlversuche = ""; /* AN- UND ABREISE DATUM FORMATIEREN */ $anreiseDatum = date('d - m - Y', mktime(0,0,0,$anMonat,$anTag,$anJahr)); $abreiseDatum = date('d - m - Y', mktime(0,0,0,$abMonat,$abTag,$abJahr)); $anreiseMK = mktime(0,0,0,$anMonat,$anTag,$anJahr); $abreiseMK = mktime(0,0,0,$abMonat,$abTag,$abJahr); /* SPEICHER FEHLERMELDUNGEN VON DER FORMULAREINGABE */ if(checkdate($anMonat, $anTag, $anJahr) === false) { $fehlerB['anreiseDatum'] = "Ungültiges Anreisedatum"; } if(checkdate($abMonat, $abTag, $abJahr) === false) { $fehlerB['abreiseDatum'] = "Ungültiges Abreisedatum"; } if(!in_array($anTag, $tage)){ $fehlerB["anreiseDatum"] = "Bitte wählen Sie einen <b>Tag</b> aus"; } if(!in_array($abTag, $tage)){ $fehlerB["abreiseDatum"] = "Bitte wählen Sie einen <b>Tag</b> aus"; } if(!in_array($anMonat, $monate)){ $fehlerB["anreiseM"] = "Bitte wählen Sie ein <b>Monat</b> aus"; } if(!in_array($abMonat, $monate)){ $fehlerB["abreiseM"] = "Bitte wählen Sie ein <b>Monat</b> aus"; } if(!in_array($anJahr, $jahre)){ $fehlerB["anreiseY"] = "Bitte wählen Sie ein <b>Jahr</b> aus"; } if(!in_array($abJahr, $jahre)){ $fehlerB["abreiseY"] = "Bitte wählen Sie ein <b>Jahr</b> aus"; } if(empty($ap)){ $fehlerB["ap"] = "Bitte wählen Sie eine <b>Unterkunft</b> aus"; } if($anreiseMK >= $abreiseMK){ $fehlerB["dauer"] = "Ungültige Buchungsdauer"; } /* WENN KEINE FEHLER BEI DER EINGABE FORHANEN SIND WIRD ZUR PRÜFUNG WEITERGELEITET */ if(count($fehlerB) > 0){ $fehlversuche ++; verfuegbarkeitF($ap,$anTag,$anMonat,$anJahr,$abTag,$abMonat,$abJahr,$fehlversuche,$fehlerB); } else { echo "<h3>Wird überprüft...</h3>"; require 'functions/zeitdifferenz.inc.php'; $dauer = zeitdifferenz($anreiseMK, $abreiseMK, "Tage"); echo "<p>**************************************<br>\nAnreisetag: $anreiseDatum" . "<br>\nAbreisetag: $abreiseDatum<br>\n__________________________________<br>\n"; echo "Die Buchungsdauer beträgt $dauer"; if($dauer == 1){ echo " Nacht.<br>\n**************************************</p>"; } else { echo " Nächte.<br>\n**************************************</p>"; } echo "<p>$anreiseMK<br> $abreiseMK</p>"; require 'functions/DB_test_open.inc.php'; /* SQL Abfrage ausführen */ $abfrage = mysqli_query($mysqli,"SELECT * from buchungen"); /* Anzahl der Datensätze ermitteln und ausgeben */ $num = mysqli_num_rows($abfrage); /* Datensätze aus Ergebnis ermitteln, in Array speichern und ausgeben */ echo "<p>"; echo "<span class='underline green'>$num Datensätze gefunden</span><br>\n"; while ($dsatz = mysqli_fetch_assoc($abfrage)) { $ausgabe = $dsatz["id"] . ", " . $dsatz["apartment"] . ", " . $dsatz["belegt"] . ", " . $dsatz["anmerkung"] . "<br>\n"; echo utf8_encode($ausgabe); } echo "</p>"; echo "<p>"; $fehlerP = array(); $gebTage = array(); /* SCHLEIFE, die alle Daten zwischen den zwei angefragen Tagen(Daten) generiert */ for($i = 0; $i<=$dauer; $i++): $t = date('d-m-Y',mktime(0, 0, 0, $anMonat, ($anTag+$i), $anJahr)); $d = date('Y-m-d',mktime(0, 0, 0, $anMonat, ($anTag+$i), $anJahr)); echo "Tag ".($i+1).": $t"; $gebTage[$i] = $t; /* VERSCHACHTELTE SCHLEIFE die jeden angefragen Tag auf eine schon vorhandene Buchung kontrolliert */ $abfrage2 = mysqli_query($mysqli,"SELECT * from buchungen WHERE belegt='$d'"); while ($dsatz2 = mysqli_fetch_assoc($abfrage2)) { echo "<span class='fehler'> - belegt! "; $ausgabe2= $dsatz2['anmerkung']; $fehlerP[$dsatz2['belegt']]= $dsatz2['anmerkung'].", ".$dsatz2['belegt']."<br>\n"; echo utf8_encode($ausgabe2)."</span>"; } echo"<br>\n"; endfor; mysqli_close($mysqli); echo "<span class='green'>Datenbankverbindung getrennt...</span><br>\n"; echo"****************************************<br>\n"; /* * PRÜFT OB FEHLER AUFGETRETEN SIND * WENN NICHT - WIRD ZUR NÄCHSTEN FUNKTION WEITERGELEITET * WENN DOCH - WIRD DAS FEHLER ARRAY $fehlerP AUSGEGEBEN */ if(empty($fehlerP)){ $anfrage=array(); $z = 0; echo "Geht weiter...<br>\n"; foreach($gebTage as $v) { $anfrage[$z] = utf8_encode($v); $z++; echo utf8_encode($v); echo"|"; } echo "<br>\n***************************************<br>\n"; echo "<span class='green'>Weiterleitung zur Funktion Buchungsanfrage()</span></p>"; $vn=""; $nn=""; $email=""; $tel=""; $personen=""; $anmerkung=""; $fehlerB=""; buchungsanfrage($vn,$nn,$email,$tel,$personen,$anmerkung,$fehlerB,$anfrage); } else { if(count($fehlerP) == 1){ echo "<span class='fehler underline'>Überschneidung:</span><br>\n"; } else { echo "<span class='fehler underline'>Überschneidungen:</span><br>\n"; } foreach($fehlerP as $v) { echo utf8_encode($v); } echo "***************************************</p>"; } } } #FUNKTION BUCHUNG ANFRAGEN: function buchungsanfrage($vn="",$nn="",$email="",$tel="",$personen="",$anmerkung="",$fehlerB="",$anfrage) { global $anfrage; echo "<p>"; foreach($anfrage as $v) { echo $v."<br>\n"; } echo "<p>"; $fehlerV = array(); ?> <h3>BuchungsanfrageForm</h3> <p class="green">Tage frei:</p> <p><?php foreach($anfrage as $v){echo"$v<br>\n";} ?></p> <form method="post" action="#C1" <label for="vn">Vorname: <input type="text" id="vn" name="vn"><br> </label> <label for="nn">Nachname: <input type="text" id="nn" name="nn"><br> </label> <label for="personen">Personen: <input type="number" id="personen" name="personen"><br> </label> <label for="email">Email: <input type="email" id="email" name="email"><br> </label> <label for="tel">Telefon: <input type="text" id="tel" name="tel"><br> </label> <label for="anmerkung">Anmerkung: <textarea id="anmerkung" name="anmerkung"></textarea><br> </label> <input type="hidden" name="datum"> <input type="submit" name="anfragen" value="Anfragen"> <input type="submit" value="Verwerfen"> </form> <?php } function buchungsanfrageVerarbeiten() { echo"<h3>Verarbeitung...</h3>"; !empty(filter_input(INPUT_POST, "vn", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "vn", FILTER_SANITIZE_ENCODED)) ? $vn = ucwords(trim($_POST["vn"], "- '")) : $vn = ""; !empty(filter_input(INPUT_POST, "nn", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "nn", FILTER_SANITIZE_ENCODED)) ? $nn = ucwords(trim($_POST["nn"], "- '")) : $nn = ""; !empty(filter_input(INPUT_POST, "email", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "email", FILTER_SANITIZE_ENCODED)) ? $email = trim($_POST["email"]) : $email = ""; !empty(filter_input(INPUT_POST, "tel", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "tel", FILTER_SANITIZE_ENCODED)) ? $tel = trim($_POST["tel"]) : $tel = ""; !empty(filter_input(INPUT_POST, "personen", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "personen", FILTER_SANITIZE_ENCODED)) ? $personen = trim($_POST["personen"]) : $personen = ""; !empty(filter_input(INPUT_POST, "anmerkung", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "anmerkung", FILTER_SANITIZE_ENCODED)) ? $anmerkung = trim($_POST["anmerkung"]) : $anmerkung = ""; !empty(filter_input(INPUT_POST, "anfrage", FILTER_SANITIZE_ENCODED)) && is_string(filter_input(INPUT_POST, "anfrage", FILTER_SANITIZE_ENCODED)) ? $anfrage = trim($_POST["anfrage"]) : $anfrage = ""; $fehlerV = array(); # Individuelle Prüfungen der Eingaben # Hier werden Fehlermeldungen erzeugt, falls Eingaben nicht korrekt sind oder Felder nicht ausgefüllt wurden if(empty($vn)){ $fehlerV["vn"] = "Bitte geben Sie Ihren <b>Namen</b> ein"; } elseif(! preg_match("@^[A-Za-z-'ÄÖÜäöü ]+$@", $vn)){ $fehler["vn"] = "Es sind nur <b>Buchstaben, Leerzeichen und ' ` ´ -</b> erlaubt"; } if(empty($nn)){ $fehlerV["nn"] = "Bitte geben Sie Ihren <b>Namen</b> ein"; } elseif(! preg_match("@^[A-Za-z-'ÄÖÜäöü ]+$@", $nn)){ $fehlerV["nn"] = "Es sind nur <b>Buchstaben, Leerzeichen und ' ` ´ -</b> erlaubt"; } if(empty($email)){ $fehlerV["email"] = "Bitte geben Sie Ihre <b>Email</b> ein"; }elseif(filter_var($email, FILTER_VALIDATE_EMAIL) === false){ $fehlerV["email"] = "<b>Email</b> wurde nicht korrekt eingegeben"; } if(!empty($tel)){ if(!preg_match("@^[0-9-/+ ]+$@",$tel)){ $fehlerV["tel"] = "Es sind nur <b>Zahlen, +, / und Leerzeichen</b> erlaubt"; } } if(empty($personen)){ $fehlerV["personen"] = "Bitte geben Sie die <b>Personenanzahl</b> an"; }elseif(!is_numeric($personen)){ $fehlerV["personen"] = "Personen Fehler"; }elseif ($personen<0 && $personen>10){ $fehlerV["personen"] = "Ungültige Personenanzahl"; } if(count($fehlerV) > 0){ buchungsanfrage($vn,$nn,$email,$tel,$anmerkung,$personen,$fehlerV,$anfrage); }else{ } } ?>
Kommentar