Plausibilitäsprüfung über Datum

holger_buns

Mitglied
Hallo,
ich habe in einem Kontaktformular für ein Hotel, eine Eingabemöglichkeit von Anreise und Abreisedatum. Nun möchte ich, dass z. b. das Abreisedatum immer in der Zukunft liegt und man nicht das Anreise und Abreisedatum am gleichen Tag wählen kann.

Wie kann ich das erreichen?

Hier ein Auszug:

PHP:
<div class="reihe">
                               <span class="label">Gew&uuml;nschte Anreise:*</span>
                                <span class="feld"><? if ($error_hash["Anreise"] != "") { ?><span style="float:left; margin-right:10px"><img src="../images/error.gif" alt="<? echo $error_hash['Anreise']; ?>" /></span><? } ?>
                                <input type="text" name="Anreise" class="datepicker textfeld_date" value='<?php echo @$_POST['Abreise']; ?>' /></span>
                            </span></div>
                            <div class="reihe">
                               <span class="label">Gew&uuml;nschte Abreise:*</span>
                                <span class="feld"><? if ($error_hash["Abreise"] != "") { ?><span style="float:left; margin-right:10px"><img src="../images/error.gif" alt="<? echo $error_hash['Abreise']; ?>" /></span><? } ?>
                                <input type="text" name="Abreise" class="datepicker textfeld_date" value='<?php echo @$_POST['Abreise']; ?>'></span>
                            </span></div>

Code:
<script>
$(document).ready(function() {
$( ".datepicker" ).datepicker();
});
jQuery(function($){
        $.datepicker.regional['de'] = {clearText: 'löschen', clearStatus: 'aktuelles Datum löschen',
                closeText: 'schließen', closeStatus: 'ohne Änderungen schließen',
                prevText: '<zurück', prevStatus: 'letzten Monat zeigen',
                nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen',
                currentText: 'heute', currentStatus: '',
                monthNames: ['Januar','Februar','März','April','Mai','Juni',
                'Juli','August','September','Oktober','November','Dezember'],
                monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
                'Jul','Aug','Sep','Okt','Nov','Dez'],
                monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen',
                weekHeader: 'Wo', weekStatus: 'Woche des Monats',
                dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
                dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
                dateFormat: 'dd.mm.yy', firstDay: 1, 
                initStatus: 'Wähle ein Datum', isRTL: false};
        $.datepicker.setDefaults($.datepicker.regional['de']);
});
</script>

Der Javascript Code erzeugt eine Kalenderauswahl.

Gruss
Holli
 
Indem du prüfst ob das Abreisedatum kleiner oder gleich dem Anreisedatum ist!

Dazu eine Change-Funktion erstellen in der beim Ändern der Daten die beiden verglichen werden.
 
So etwas geht am einfachsten wenn du die Unix-Time benutzt. Da kannst du dann mit der Funktion mktime die Sekunden berechnen lassen und dann mit
mktime(Stunden, Minuten, Sekunden, Monat, Tag, Jahr) > time()
überprüfen, ob das Datum in der Zukunft liegt.

Wenn du dann noch die Tage überprüfen willst kannst du die date-Funktion nehmen, und mit
date("j", $anreise) < date("j", $abreise) && $anreise < $abreise
überprüfen ob beide am gleichen Tag sind.
 
Zuletzt bearbeitet:
Damit nicht zu viel durcheinander steht, schreibe ich nochmal einen neuen Beitrag.

Ich habe mir von hier den Code für den Datepicker "geklaut". Dann zwei Eingabefelder erstellt in welche damit das Von-/Bis-Datum eingegeben wird.

Wird jetzt ein Datum eingegeben, wird geprüft ob das Bis-Datum kleiner oder gleich dem Von-Datum ist. In diesem Fall wird eine Meldung ausgegeben und der Inhalt im Bis-Datum gelöscht.

HTML:
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<script>
$(function() {
$( "#date_von, #date_bis" ).datepicker();

$(".datepicker").change(function() {

	von = Date.parse($("#date_von").val());
	bis = Date.parse($("#date_bis").val());

	if (bis <= von) {
		alert ("Geht nicht");
		$("#date_bis").val("");
	}

});


});
</script>

<p>Von: <input type="text" id="date_von" class="datepicker" /></p>
<p>Bis: <input type="text" id="date_bis" class="datepicker" /></p>
 
PHP-seitig musst du aber auf_jeden_Fall auch nochmal prüfen!
Tipp: Verwende die DateTime-Klasse :)
 
Zurück