Marcus Roffmann
Erfahrenes Mitglied
1. Problem
Ich will zwei Daten miteinander vergleichen und so entscheiden ob jemand alt genug ist.
- Sollte jemand über 18 sein ist alles in Ordnung.
- Ist jemand unter 18, aber über 16 benötige ich einen Hinweis der den User darauf aufmerksam macht das er eine Einverständniserklärung der Eltern benötigt.
- Ist jemand unter 16, so wird er darauf hingewiesen das er zu jung ist.
2. Lösung:
Ich habe das Datum das angegeben wurde mittels mktime() Funktion eine UNIX-Timestamp des Datums generiert, soweit es nicht vor 1970 liegt (1970 hat die UNIX-Epoche angefangen).
Danach habe ich mir mittels der date() Funktion das aktuelle Datum sowie das aktuelle Jahr seperat erstellt. Von dem aktuellen Jahr wurde die Werte 18 und 16 abgezogen um die richtigen Daten zu haben die benötigt werden.
Danach wurde auch wieder mit mktime() eine UNIX-Timestamp erstellt und die Timestamps wurden miteinander verglichen.
Kurz angeschnitten:
Wenn Timestamp(Geburtstag) < Timestamp (18 Jahre), dann Benutzer > 18
Wenn Timestamp(Geburtstag) > Timestamp (18 Jahre), Timestamp(Geburtstag) < Timestamp(16 Jahre), dann Benutzer jünger 18, älter 16
Wenn Timestamp(Geburtstag) > Timestamp (16 Jahre), dann Benutzer unter 16, Benutzer zu jung
Folgend habe ich die Funktion abgebildet mit der der Vergleich gemacht wird:
Wozu das ganze?
Es soll ein Anmeldeformular für eine LAN-Party erstellt werden bei dem gleich darauf hingewiesen wird ob er zu jung ist, ob er eine Einverständniserklärung der Eltern braucht oder ob alles soweit in Ordnung ist. Hierfür wurde diese Funktion entwickelt!
Gruß, digi
@Kojote: Sorry, habe die Allgemeinen Regeln beinahe vergessen!
Ich will zwei Daten miteinander vergleichen und so entscheiden ob jemand alt genug ist.
- Sollte jemand über 18 sein ist alles in Ordnung.
- Ist jemand unter 18, aber über 16 benötige ich einen Hinweis der den User darauf aufmerksam macht das er eine Einverständniserklärung der Eltern benötigt.
- Ist jemand unter 16, so wird er darauf hingewiesen das er zu jung ist.
2. Lösung:
Ich habe das Datum das angegeben wurde mittels mktime() Funktion eine UNIX-Timestamp des Datums generiert, soweit es nicht vor 1970 liegt (1970 hat die UNIX-Epoche angefangen).
Danach habe ich mir mittels der date() Funktion das aktuelle Datum sowie das aktuelle Jahr seperat erstellt. Von dem aktuellen Jahr wurde die Werte 18 und 16 abgezogen um die richtigen Daten zu haben die benötigt werden.
Danach wurde auch wieder mit mktime() eine UNIX-Timestamp erstellt und die Timestamps wurden miteinander verglichen.
Kurz angeschnitten:
Wenn Timestamp(Geburtstag) < Timestamp (18 Jahre), dann Benutzer > 18
Wenn Timestamp(Geburtstag) > Timestamp (18 Jahre), Timestamp(Geburtstag) < Timestamp(16 Jahre), dann Benutzer jünger 18, älter 16
Wenn Timestamp(Geburtstag) > Timestamp (16 Jahre), dann Benutzer unter 16, Benutzer zu jung
Folgend habe ich die Funktion abgebildet mit der der Vergleich gemacht wird:
PHP:
<?
function checkBirthDate($birthday) {
/* setup birthdate, I know it could be easier, but I just want to
improve my knowledge */
$byear = substr($birthday, 0, 4);
$bmonth = substr($birthday, 5, 2);
$bday = substr($birthday, 8, 2);
// todays date
$day = date("d");
$month = date("m");
$year = date("Y");
// time is needed to create correct timestamp
$hour = date("H");
$minute = date("i");
$second = date("s");
// to check if he's over 18, year must be 18 years earlier
$eighteen = $year - 18;
// if he is over 16, birthyear must be 16 years earlier
$sixteen = $year - 16;
// create timestamp of birthdate
$eighteenstamp = mktime($hour, $minute, $second, $month, $day, $eighteen);
$sixteenstamp = mktime($hour, $minute, $second, $month, $day, $sixteen);
$birthstamp = mktime($hour, $minute, $bsecond, $bmonth, $bday, $byear);
// if he's over 18
if($birthstamp < $eighteenstamp) {
$result = "You are older than 18";
}
// if he's under 18, but over 16
if($birthstamp > $eighteenstamp) {
if($birthstamp < $sixteenstamp) {
$result = "You are younger than 18, but older as 16";
}
}
// if he's under 16
if($birthstamp > $sixteenstamp) {
$result = "You are younger than 16";
}
// return the correct result message
return $result;
}
// just a little test
print checkBirthDate("1985-04-04")."<br />";
?>
Es soll ein Anmeldeformular für eine LAN-Party erstellt werden bei dem gleich darauf hingewiesen wird ob er zu jung ist, ob er eine Einverständniserklärung der Eltern braucht oder ob alles soweit in Ordnung ist. Hierfür wurde diese Funktion entwickelt!
Gruß, digi
@Kojote: Sorry, habe die Allgemeinen Regeln beinahe vergessen!