Frage von TygaOne, 79

Wie kann ich bei PHP zu bestimmten Tageszeiten verschiedene Sätze anzeigen lassen?

Hallo Zusammen,

Ich wollte mal fragen ob es möglich ist, in PHP mit einem code morgens guten Morgen anzeigen zu lassen und abends guten Abend anzeigen zu lassen.
Könnt ihr mir da weiterhelfen?

Lg
TygaOne

Antwort
von Minilexikon, 34

Hi,

dir hilft eigentlich bereits ein Einzeiler, wenn du nur zwischen zwei Tageszeiten unterscheiden möchtest:

echo (date('A', strtotime(date("Y-m-d H:i:s"))) == 'AM') ? 'Guten Morgen' : 'Guten Abend';

bzw. um Fehler bei Falscheingabe abzufangen:

switch(date('A', strtotime(date("Y-m-d H:i:s")))) {
case 'AM':
echo 'Guten Morgen!';
break;
case 'PM':
echo 'Guten Abend!';
break;
}
Antwort
von Homero, 45

Das ist recht simpel.

in der Varisblen  time() bekommst Du einen Unix-Timestmp zurück.

Das sind die Sekunden seit Januar 1 1970 00:00:00 GMT.

Dann gibt es das fomat date(), must mal gggg.. nach php date().

Das formatiert Dir den Timestamp nach belieben in verschiedene Datumsformate.

Wenn Du die Stunden des Tages (24) haben möchtest,

$stundejetzt=date("G",time());

Jetzt kannst Du entweder mit

 if()

oder mit

switch()

weitermachen.

switch($stundejetzt){

  case 0:$Begrüssungtext="Schlafstörungen?";

  case 6:$Begrüssungtext="Guten Morgen";

  case 12: $Begrüssungtext="Mahlzeit";

  default:$Begrüssungtext="Na, auch nichts besseres zu tun :)";

}

Du kannst Dir auch für jede Stunde eine Begrüssung machen.

Mach Dir ein array

$begruessung=array( 0=>"Nachtschwärmer; 1=>"Die Tumruhr hat gerade eins  geschlagen; ....usw

);

echo $begruessung[$stundejetzt];




Kommentar von TygaOne ,

Bei der Lösung mit switch, funktioniert das nur in der stunde 0,6&12 oder für die zeit von 0-6,6-12&12-0?

Kommentar von Homero ,

Na, mit switch musst Du halt für jede Stunde, in der Du eine andere Ausgabe willst, einen Zeile einfügen.

ansonsten machst Du es halt mit if()

if($stundejetzt>5 AND $stundejetzt<9){

$begrüssungstext="Gutenmorgen";

}elseif($stundejetzt>12 AND $stundejetzt<14){

$begrüssungstext="Mahlzeit";

}elseif($stundejetzt>11 AND $stundejetzt<04){

$begrüssungstext="Gute Nacht";

}else{

$begrüssungstext="Moin, schön, das Du da bist";

}

Kommentar von tWeuster ,

Generell eine gute Idee. Ich würde aber weder ein IF noch ein SWITCH nehmen sondern ein Array.

$arArray = [0="Morgens", 12="Abend"];

Mit Rechenoperationen (z.B. Runden) rechnest du die Stunden dann auf Morgens oder Abends um. Dann kannst du es einfach ausgeben lassen: echo $arArray[$stunde];

Hätte den großen Vorteil, dass du den Code irgendwann aus einer Datenbank holen könntest und/oder Mehrsprachig aufziehen.

Kommentar von TygaOne ,

Mit dem Array muss ich ja aber alle Stunden einzeln von 0-24 eingeben

Kommentar von Homero ,

Du solltest Dir die Funktionen schon mal im Detail anschauen:

for($a=0; $a<=23; $a++){

switch($a){
case ($a>22): echo "Nachtschwärmer ".$a."
"; break;
case ($a>18): echo "Guten Abend ".$a."
"; break;
case ($a>16): echo "Teatime ".$a."
"; break;
case ($a>14): echo "Guten Tag ".$a."
"; break;
case ($a>12): echo "Mahlzeit ".$a."
"; break;
case ($a>9): echo "Guten Tag ".$a."
"; break;
case ($a>5): echo "guten Morgen ".$a."
"; break;

}
}

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten