Text nach Uhrzeit, aber.. ?

Ich raff grad ziemlich wenig :) Hab fast schon alles ausprobiert - entweder es wird "Pipe Dreams" ausgegeben oder garnichts...
PHP:
<?php 
$datum = getdate();
$stund = $datum[hours];
if($stund > 14 && $stund < 20) 

{ echo "<strong class=\"header_program\">&quot;Strawberry fields&quot;</strong>"; } 

else 
{

if($stund > 20 &&  $stund < 23)
 
{ echo "<strong class=\"header_program\">&quot;Pipe Dreams&quot;</strong>"; }

else 
	{

if($stund >= 23 &&  $stund < 4) 

{ echo "<strong class=\"header_program\">&quot;Night on Earth&quot;</strong>"; }

else 
		{

if($stund > 4 && $stund < 5) 

{ echo "<strong class=\"header_program\">&quot;This is hardcore&quot;</strong>"; }

else 
			{

if($stund > 5 && $stund < 14) 

{ echo "<strong class=\"header_program\">&quot;a dry cool place&quot;</strong>"; }

}
	}
		}
			}
?>
 
Hallo,

na so schwer ist das doch nicht. Wenn du etwas von 14:00 bis 19:59 Uhr anzeigen lassen willst (erste Abfrage), dann musst du sicherstellen, dass die Stunde >= 14 und <= 19 ist. Entsprechend für die anderen Fälle. Bezüglich „Night on Earth“ hab ich dir den Tipp ja schon gegeben, dass es keine Zahl gibt, die >= 23 und < 4 ist und dass man hier also kein && (und) verwenden darf, sondern ein || (oder).

Grüße,
Matthias
 
Hi, ich komm mir grad ein wenig dusselig vor.. also habs gemacht, wie du das beschrieben hast, aber irgendwie macht der das nicht!?

PHP:
<?php  
$datum = getdate(); 
$stund = $datum[hours]; 
if($stund > 14 || $stund <= 20)  
{ echo "<strong class=\"header_program\">&quot;Strawberry fields&quot;</strong>"; }  
else  
{ 
if($stund > 20 || $stund <= 23)  
{ echo "<strong class=\"header_program\">&quot;Pipe Dreams&quot;</strong>"; } 
else  
{ 
if($stund > 23 || $stund <= 4)  
{ echo "<strong class=\"header_program\">&quot;Night on Earth&quot;</strong>"; } 
else  
{ 
if($stund > 4 || $stund <= 5)  
{ echo "<strong class=\"header_program\">&quot;This is hardcore&quot;</strong>"; } 
else  
{ 
if($stund > 5 || $stund <= 14)  
{ echo "<strong class=\"header_program\">&quot;a dry cool place&quot;</strong>"; } 
} 
} 
} 
} 
?>

Was ist daran falsch?
 
Hallo,

warum hast du jetzt überall && durch || ersetzt? Überleg dir doch mal in Ruhe, was der Unterschied zwischen „und“ (&&) und „oder“ (||) ist.

Grüße,
Matthias
 
Hi,

ich hab die Überprüfung jetzt mal ganz anders geschrieben:

PHP:
switch ($stund) {
	case ($stund > 4 && $stund <=5):
		echo "<strong class=\"header_program\">&quot;This is hardcore&quot;</strong>";
		break;
	case ($stund > 5 && $stund <= 14):
		echo "<strong class=\"header_program\">&quot;a dry cool place&quot;</strong>";
		break;
	case ($stund >14 && $stund <= 20):
		echo "<strong class=\"header_program\">&quot;Strawberry fields&quot;</strong>";
		break;
	case ($stund > 20 && $stund <= 23):
		echo "<strong class=\"header_program\">&quot;Pipe Dreams&quot;</strong>";
		break;
	default:
		echo "<strong class=\"header_program\">&quot;Night on Earth&quot;</strong>";
		break;
}

Was bei deiner Prüfung (abgesehen das es nicht funktioniert) auch ein Problem ist, die Bedingung zwischen 23 und 4 Uhr kann nie erfüllt werden.
Denn es kann nie möglich sein das es größer als 23 und gleichzeitig kleiner oder gleich 4 ist.

Bei der SWITCH-Anweisung wird dieser Fall einfach durch den DEFAULT Eintrag übernommen.

Gruß Thomas
 
Super, vielen Dank! Kann man die oben schon beschriebene if-Anweisung für den Sonntag auch in dieses Skript integrieren?

PHP:
case ($datum['weekday']=='Sunday'):
echo "Es ist Sonntag";
break;
 
Ist zwar eigentlich falsch weil man die SWITCH-Anweisung vom Wert der Variablen $stund abhängid ausführen will, aber gehen tut es trotzdem:

PHP:
switch ($stund) {
	case ($datum['weekday']=='Sunday'):
		echo "Es ist Sonntag";
		break;
	case ($stund > 4 && $stund <=5):
		echo "<strong class=\"header_program\">&quot;This is hardcore&quot;</strong>";
		break;
	case ($stund > 5 && $stund <= 14):
		echo "<strong class=\"header_program\">&quot;a dry cool place&quot;</strong>";
		break;
	case ($stund >14 && $stund <= 20):
		echo "<strong class=\"header_program\">&quot;Strawberry fields&quot;</strong>";
		break;
	case ($stund > 20 && $stund <= 23):
		echo "<strong class=\"header_program\">&quot;Pipe Dreams&quot;</strong>";
		break;
	default:
		echo "<strong class=\"header_program\">&quot;Night on Earth&quot;</strong>";
		break;
}

Ich hab den Sonntag gleich als erstes gesetzt weil diese Prüfung ja unabhängig von der Uhrzeit ausgeführt werden soll.

Gruß Thomas
 
Also das Skript funktioniert bestens.. hat aber einen .. wie soll ich sagen, Denkfehler. Und zwar: Das Skript vergleicht ja die Zeit mit der Variable $stund. Gehen wir mal davon aus es ist 14.01 Uhr. Das Skript sollte nun richtigerweise "Strawberry fields" anzeigen, zeigt aber "a dry cool place". $stund gibt 14 aus und deswegen zeigt er auch "a dry cool place" aus, weil ja abgefragt, wird, ob kleiner gleich 14 ist. Es fragt quasi nur ganzzahlige Zahlen ab. Es ist ihm egal quasi egal, ob 14.00 oder 14.01.. ist - es ist immer 14.00 Uhr. Kann man in die Abfrage auch Minuten einbinden, dann wäre es auf jeden Fall exakter.

Ich hoffe ihr versteht das, was ich hier geschrieben habe ;)
 
So meine Uhr sagt es ist kurz nach 12.00. Aber bevor es bei mir was zum Essen gibt, gibt es was für Dich:

PHP:
$datum = getdate();
$stund = mktime($datum['hours'], $datum['minutes']);

switch ($stund) { 
    case ($datum['weekday']=='Sunday'): 
        echo "Es ist Sonntag"; 
        break; 
    case ($stund > mktime("4", "00") && $stund <= mktime("5" ,"59")): 
        echo "<strong class=\"header_program\">&quot;This is hardcore&quot;</strong>"; 
        break; 
    case ($stund > mktime("6", "00") && $stund <= mktime("14", "59")): 
        echo "<strong class=\"header_program\">&quot;a dry cool place&quot;</strong>"; 
        break; 
    case ($stund >mktime("15", "00") && $stund <= mktime("20", "59")): 
        echo "<strong class=\"header_program\">&quot;Strawberry fields&quot;</strong>"; 
        break; 
    case ($stund > mktime("21", "00") && $stund <= mktime("23", "59")): 
        echo "<strong class=\"header_program\">&quot;Pipe Dreams&quot;</strong>"; 
        break; 
    default: 
        echo "<strong class=\"header_program\">&quot;Night on Earth&quot;</strong>"; 
        break; 
}

Wobei ich dazu sagen muss das mir die Zeitfunktionen schon immer zumindest ein bisschen Probleme gemacht haben. Es gibt also vielleicht eine besser Lösung.

Gruß Thomas
 
Zurück