PHP Zeitabhängige anzeige

Cumulonimbus

Lt. Junior Grade
Registriert
Feb. 2007
Beiträge
303
Hallo,

ich möchte zwischen verschiedenen Zeiten verschieden Texte anzeigen. Das klappt mit folgendem Code auch gut, wenn ich mit Stunden arbeite.

PHP:
if ( (date('H') < 9) || (date('H') >= 5) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Wenn ich aber z.B. mit Minuten arbeite, klappt das nicht mehr.

PHP:
if ( (date('H:i') < 9:15) || (date('H:i') >= 10:15) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Wo ist der Fehler?
 
Zuletzt bearbeitet:
2 Sachen beim unteren:

1. Da ist ein "i". Ich denke mal das gehört da nicht hin.
2. Du solltest die Zeiten untereinander tauschen wie beim oberen Beispiel.

EDIT: Gerade eben war nur bei der ersten Teilbedingung ein "i" und bei der zweiten ein "m". Hast du das korrigiert oder werde ich blind? ^^

EDIT2: Beides Müll. "||" ist ja logisches Oder. -.-
 
Zuletzt bearbeitet:
Du würdest da Strings mit >/>= vergleichen, das klappt nicht (oder vielleicht die Länge, aber sicher nicht die Semantik).
Teil das if auf: if((date("H") < 9 && date("i") < 15) || (...).
 
Doppelpunkt ist so nicht erlaubt, und zwar an folgenden stellen:

if ( (date('H:i') < 9:15) || (date('H:i') >= 10:15) ) {

Du musst es schon ausklammern:

PHP:
if ( (date('H:i') < '9:15') || (date('H:i') >= '10:15') ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Denn ansonsten nimmt PHP an es sei eine Rechenaufgabe und diese hat an dieser Stelle nichts verloren ;)
 
NoXPhasma schrieb:
Doppelpunkt ist so nicht erlaubt, und zwar an folgenden stellen:

Denn ansonsten nimmt PHP an es sei eine Rechenaufgabe und diese hat an dieser Stelle nichts verloren ;)

Oh, da hätte ich aber selber draufkommen können. :-)

Hmm, aber probiers mal selber aus. Normal müsste Dir jetzt "normaler Text angezeigt werden wenn Du's ausprobierst. Wird aber erweiterte text angezeigt.
 
Zuletzt bearbeitet:
Velines schrieb:
Du würdest da Strings mit >/>= vergleichen, das klappt nicht (oder vielleicht die Länge, aber sicher nicht die Semantik).
Teil das if auf: if((date("H") < 9 && date("i") < 15) || (...).

Du hast recht, ich habe da gar nicht drauf geachtet, richtig wäre es so:

PHP:
if( (date('H') < 9 && date('i') < 15) || (date('H') >= 10 && date('i') >= 15) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}
 
NoXPhasma schrieb:
Du hast recht, ich habe da gar nicht drauf geachtet, richtig wäre es so:

PHP:
if( (date('H') < 9 && date('i') < 15) || (date('H') >= 10 && date('i') >= 15) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Hehe, ne. Ich denke, bei Zeiten muss man immer größer als oder gleich wie verwenden.

Also muss aus < 9 <= 9 werden. OdeR?
 
Das ist egal, du vergleichst dort einfach nur 2 Werte und keine Zeiten.

Also Aktuelle Stunde (10) mit 9 und aktuelle Minute (4) mit 15. Mit Zeiten hat das für PHP in dem Fall nichts zu tun.

*edit*

Scheint aber wirklich einen Unterschied zu machen, also mit =.

Bin da etwas unerfahren, da ich wenn schon mit Zeiten arbeite, dann nur mit Unixtime.
 
Zuletzt bearbeitet:
NoXPhasma schrieb:
Das ist egal, du vergleichst dort einfach nur 2 Werte und keine Zeiten.

Also Aktuelle Stunde (10) mit 9 und aktuelle Minute (4) mit 15. Mit Zeiten hat das für PHP in dem Fall nichts zu tun.

Das hat aber nicht geklappt gehabt, erst als ich = eingefügt habe, wurde die Anweisung korrekt ausgeführt.

PHP:
if ( (date('H:i') < '9:15') || (date('H:i') >= '10:15') ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Das tut auch nicht.
 
Cumulonimbus schrieb:
Das hat aber nicht geklappt gehabt, erst als ich = eingefügt habe, wurde die Anweisung korrekt ausgeführt.

PHP:
if ( (date('H:i') < '9:15') || (date('H:i') >= '10:15') ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}

Das tut auch nicht.

Beachte meinen Edit :)

So ist es richtig und funktioniert:

PHP:
if( (date('H') <= 9 && date('i') <= 15) || (date('H') >= 10 && date('i') >= 15) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}
 
NoXPhasma schrieb:
Beachte meinen Edit :)

So ist es richtig und funktioniert:

PHP:
if( (date('H') <= 9 && date('i') <= 15) || (date('H') >= 10 && date('i') >= 15) ) {
 echo 'Erweiterter Text';
}
else {
 echo 'Normaler Text';
}


Hoi :-)

Wenn Zeit vor 9:15 Uhr oder nach 10:15 Uhr, dann erweiterter Text, sonst normaler Text.

Also müsste jetzt der erweiterte Text angezeigt werden, wird aber normaler Text angezeigt. :-)
 
Zuletzt bearbeitet:
Blitzmerker schrieb:
Wie wärs eigentlich mit:
Code:
$currdate=date('H')*60+date('i');
if($currdate<9*60+15||$currdate>10*60+15)
...
Da bei den anderen Codeschnipseln sonst z.B. bei 8:30 Probleme auftreten...

Okay, dieser Code klappt, allerdings muss ich auch hier mit <= oder >= arbeiten.
Ergänzung ()

Hmm, also mit ODER-Operator wird das nix, besser ist es mit UND-Operator die Zeit einzugrenzen.

Meine Endlösung für's Archiv, wenn zwischen zwei Zeiten, also zeitabhängig Test ausgegeben werden soll.
PHP:
$zeit = date('H')*60+date('i');
if ($zeit>10*60+36&&$zeit<10*60+39) {

echo "Erweiterter Text";
}

Und wenn mehrere Zeitspannen eingesetzt werden, werden die UND-Operatoren mit zusätzlichem ODER-Operator verknüpft.

PHP:
if ($zeit>=5*60+36&&$zeit<=10*60+39 || $zeit>=11*60+05&&$zeit<=12*60+39) {
}
 
Zuletzt bearbeitet:
Zurück
Oben