TT-NEWS Tischtennis Forum

TT-NEWS Tischtennis Forum (https://forum.tt-news.de/index.php)
-   Stammtisch (https://forum.tt-news.de/forumdisplay.php?f=8)
-   -   PHP Stichtage (https://forum.tt-news.de/showthread.php?t=104423)

chr.flader 07.01.2011 21:20

PHP Stichtage
 
Hallo zusammen,

hoffe und denke, dass hier sicherlich welche bei sind die auch PHP können ;-)

Ich habe jetzt angefangen und versucht die Stichtage zu berechnen.

Jetzt habe ich aber das Problem, dass man auch wenn man das Alter in einer Spielklasse erreicht hat, noch bis zum 30.06. in der Altersklasse spielen kann (Saisonende).

Wie kann ich jetzt in meinem Skript die Lösung herbeibringen, dass er bis zum 30.06. jemanden in einer Spielklasse zu lässt?!

Zitat:

//Hier wird das Datum umgewandelt
$teile_datum = explode("-", $geboren);

// print $teile_datum[0];
// print $teile_datum[1];
// print $teile_datum[2];


$geboren_jahr = $teile_datum[0]; // Teil1
$geboren_monat = $teile_datum[1]; // Teil2
$geboren_tag = $teile_datum[2]; // Teil3

//Alter berechnen
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$geburt = mktime(0,0,0,$geboren_monat,$geboren_tag,$geboren_jahr);
$age = intval(($jetzt - $geburt) / (3600 * 24 * 365));



$geboren = $geboren_tag . "." . $geboren_monat . "." . $geboren_jahr;
// print $geboren_in;

$adress = $adr_id . " / " . $name . " / " . $geboren . " " . $age ." " . "Jahre";

//Altersklasse berechnen:
$herren = 19;
$jungen = 18;
$schueler_a = 15;
$schueler_b = 13;
$schueler_c = 11;


if ($age > $schueler_a && $age < $herren) {
echo "Jungen";

} elseif ($age > $schueler_b && $age < $jungen) {
echo "Schueler A";

} elseif ($age > $schueler_c && $age < $schueler_a) {
echo "Schueler B";

} elseif ($age <= $schueler_c) {
echo "Schueler C";

} else {
echo "Herren";
}

Clausthaler 08.01.2011 02:16

Stichtage
 
Würde hier mit Stichtagen rechnen anstatt Datumsbestandteile zu vergleichen.

z.B. so:

$ATeam = array('Tom' => '29.10.1987', 'Dick' => '30.07.1997', 'Harry' => '20.11.1999');

foreach ($ATeam as $Name => $geboren) {
//Hier wird das Datum umgewandelt
$teile_datum = explode(".", $geboren);
$birthdate = mktime(0, 0, 0, $teile_datum[1] , $teile_datum[0], $teile_datum[2]);

//Altersklasse berechnen:
switch ($birthdate) {

case ($birthdate > mktime(0, 0, 0, 6, 30, date('Y') - 11)):
$Altersklasse = "Schueler C";
break;

case ($birthdate > mktime(0, 0, 0, 6, 30, date('Y') - 13)):
$Altersklasse = "Schueler B";
break;

case ($birthdate > mktime(0, 0, 0, 6, 30, date('Y') - 15)):
$Altersklasse = "Schueler A";
break;

case ($birthdate > mktime(0, 0, 0, 6, 30, date('Y') - 18)):
$Altersklasse = "Jungen";
break;

// ggf. weitere Altersklassen

default:
$Altersklasse = "Herren";
break;
}
echo $Name . ' spielt: ' . $Altersklasse . '<br>';
}


P.S.: Ggf noch auf Fencepost error prüfen ;)

Grüße

chr.flader 08.01.2011 16:08

AW: PHP Stichtage
 
Danke für die Hilfe. Ich muss mir das jetzt erstmal in Ruhe angucken. So gut kenne ich mich damit noch nicht aus. Verstehe bis jetzt nur 60 % von dem was du geschrieben hast.

Aber schon mal besten Dank!

Christian

chr.flader 15.06.2011 14:00

AW: PHP Stichtage
 
Hi,

habe ich nicht wirklich verstanden deinen Tipp. Zumal ich meine Daten ja aus der MYSQL beziehe.

Hast du vielleicht noch nen Tipp, wie ich erstmal mit meiner Variante zum richtigen Ergebnis komme?

Christian

Clausthaler 15.06.2011 15:21

AW: PHP Stichtage
 
Hallo,

nehme mal an, dass du mich meinst:

Wo die Daten herkommen ist ja eigentlich egal, hatte das Datumsformat analog zu deinem Beispiel genommen.

Vorschlag war nicht mit Datumsbestandteilen oder ganzen Jahreszahlen rumzurechnen, da bei Altersklassen ja die Stichtage (Unixtimestamps) massgeblich sind:

//Geburtsdatum
$geburt = Geburtsdatum_als_Unixtimestamp

//Altersklasse berechnen:
$jungen = mktime(0, 0, 0, 6, 30, date('Y') - 18);
$schueler_a = mktime(0, 0, 0, 6, 30, date('Y') - 15)
$schueler_b = mktime(0, 0, 0, 6, 30, date('Y') - 13):
$schueler_c = mktime(0, 0, 0, 6, 30, date('Y') - 11);

switch ($geburt) {
case ($birthdate > schueler_c):
echo "Schueler C";
break;

case ($birthdate > schueler_b):
echo "Schueler B";
break;

case ($birthdate > schueler_a):
echo "Schueler A";
break;

case ($birthdate > $jungen):
echo "Jungen";
break;

// ggf. weitere Altersklassen

default:
echo "Herren";
break;

}


Einfacher geht's nicht.

chr.flader 15.06.2011 18:47

AW: PHP Stichtage
 
Danke, ja du warst gemeint ;-)

Die aktuelle Alterklasse soll allerdings in der Adressenliste angezeigt werden. Je nachdem, wann er Geburtstag hat.

So ganz verstehe ich jetzt nicht, was ich bei:

Zitat:

Geburtsdatum_als_Unixtimestamp
eintragen muss ...

Danke

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©1999 - 2025, vBulletin Solutions, Inc.
www.TT-NEWS.de - ein Angebot der Firma ML SPORTING - Ust-IdNr. DE 190 59 22 77