date("H")

campari

Erfahrenes Mitglied
Moin leutz!

Kann mir einer helfen, warum das date("H") im array $tageszeit[$zeitjetzt] nicht f*u*n*z*t ? Also es wird bei einer Uhrzeit ab 10uhr die korrekte ausgabe gemacht, aber von 00 bis 09 wird nix ausgegeben! Ich bin ratlos, wo der fehler liegt....
Tausend Dank !
campari

PHP:
     <?php
     .....bla......
     /* Array Tageszeit */
     $tageszeit[00] = "nachts";
     $tageszeit[01] = "nachts";
     $tageszeit[02] = "nachts";
     .....bla.....
     $tageszeit[23] = "abends";
     /* Wochentag ausgeben */
     $wochentagheute = date("w");
     $wochentag = $wochentag[$wochentagheute];
     /* Datum ausgeben */
     $datum = date("d");
     /* Monat ausgeben */
     $monatheute = date("m");
     $monat = $monat[$monatheute];
     /* Tageszeit ausgeben */
     $zeitjetzt = date("H");
     $tageszeit = $tageszeit[$zeitjetzt];
     $zeittxt = "Es ist ";
     /* Zusammenfassung */
     $zeitgesamt = $zeittxt. $wochentag . $tageszeit . $datum . $monat;
     
     echo $zeitgesamt;
     ?>
</font> </font>
 
Zuletzt bearbeitet:
Ich benutze eine ähnliche Funktion, hab sie jedoch durch eine switch-Kontrollstruktur realisiert:
PHP:
<?php

	function time_of_day($hour) {
		switch($hour) {
			case 00:
			case 01:
			case 02:
			case 03:
				$tod = 'sp&auml;t nachts';
				break;

			case 04:
			case 05:
			case 06:
				$tod = 'unmenschlich fr&uuml;h morgens';
				break;

			case 07:
			case 08:
			case 09:
				$tod = 'fr&uuml;h morgens';
				break;

			case 10:
			case 11:
				$tod = 'vormittags';
				break;

			case 12:
			case 13:
				$tod = 'mittags';
				break;

			case 14:
			case 15:
			case 16:
				$tod = 'nachmittags';
				break;

			case 17:
				$tod = 'sp&auml;t nachmittags';
				break;

			case 18:
			case 19:
				$tod = 'fr&uuml;h abends';
				break;

			case 20:
			case 21:
				$tod = 'abends';
				break;

			case 22:
				$tod = 'sp&auml;t abends';
				break;

			case 23:
				$tod = 'nachts';
				break;

			default:
				$tod = '';
		}
		return $tod;
	}

?>
 
na da würd ich einfach mal sagen, dass es kein array mit dem index 01 bis 09 gibt. (du rechnest schließlich auch nicht 01 + 03 = 04, oder?!)

verwende einfach statt dem H in der date-funktion ein G (Stunde ohne führende 0). dann kanste auch einfach das 01-09 in 1-9 umändern und es sollte klappen.

dein herangehensweise bei der zuweisung der "tageszeit" würde ich übrigens nochmal überdenken. so könntest du z.B. den codeschnipsel von meinem vorreder benutzen, oder du bastelst etwas rum mit größer- bzw. kleiner-gleich; ist auf jeden fall kürzer als alle 24 stunden aufzuführen.
 
Top!
Hab wegen der Schreibarbeit an das gedacht:

PHP:
 if (($zeitheute >= 10) && ($zeitheute <= 12)) { 
 $zeitheutearray = "d";
 }

geht aber net....
 
Ich bekomme immer den Inhalt der Variable "c". Warum? Und was ändern?
Danke !
PHP:
if($zeitheute >= 1 AND $zeitheute <= 13) 
     {
     $zeitheutearray = "b";
     }
     elseif($zeitheute >= 13 AND $zeitheute <= 23) 
     { 
     $zeitheutearray = "d";
     }
     else 
     {
     $zeitheutearray = "c";
     }
 
Dazu kann es mehrere Gründe geben: Entweder, die Variable $zeitheute wurde nicht oder nicht korrekt gesetzt (in diesem Fall eine natürliche Zahl), oder sie ist kleiner gleich 0 oder größer als 23.

Am besten lässt du dir den Variablenwert ausgeben, mittels der var_dump()-Funktion bekommst du sogar noch zusätzliche Informationen zur Variable.
 
Ich hab dermassen ne Denkschleife.....wär nett, wenn mich da jemand rauskickt:
Das komplette scriptum:
PHP:
<?php
  /* Tageszeiten Array */
  $tageszeit[a] = "Morgen";
  $tageszeit[b] = "Middach";
  $tageszeit[ c] = "Nabend";
  $tageszeit[d] = "Nacht";
  /* Tageszeiten if */
  if($zeitheute >= 6 AND $zeitheute <= 12) {
  $zeitheutearray = "a";
  } elseif($zeitheute >= 12 AND $zeitheute <= 18) { 
  $zeitheutearray = "b";
  } elseif($zeitheute >= 18 AND $zeitheute <= 22) { 
  $zeitheutearray = "c";
  } else {
  $zeitheutearray = "d"; }
  /* Tageszeit ausgeben */
  $zeitheute = date("G");
  $tageszeit = $tageszeit[$zeitheutearray];
  /* Zusammenfassung */
  echo $tageszeit;
  ?>
 
PHP:
<?php
$tageszeit["a"] = "Morgen";
$tageszeit["b"] = "Middach";
$tageszeit["c"] = "Nabend";
$tageszeit["d"] = "Nacht";

$zeitheute = date("G");

if ($zeitheute >= 6 AND $zeitheute < 12) {
    $zeitheutearray = "a";
} elseif ($zeitheute >= 12 AND $zeitheute < 18) {
    $zeitheutearray = "b";
} elseif ($zeitheute >= 18 AND $zeitheute < 22) {
    $zeitheutearray = "c";
} else {
    $zeitheutearray = "d";
}

echo $tageszeit[$zeitheutearray];
?>
 
ein index, sprich 0,1,2,..., ist eine zahl und kann bzw. MUSS ohne anführungszeichen angegeben werden.

"a" oder "blub" sind zeichenketten (strings). und was macht man in php mit strings?! richitg - man packt sie schön warm und kuschelig in anführungszeichen ein. "texte" ohne anführungszeichen sind normalerweise konstanten, die zuvor deklariert worden sein müssen.
zur zeit weiß php auch, was du mit $foo[bar], allerdings wird dies nicht mehr lange der fall sein, da dies prinzipiell falsch ist. (siehe auch php manual -> array)
 
Zurück