Wochentag mit date("w", timestamp)

  • Hallo,
    ich habe folgendes versucht um an den Wochentag zu kommen, welcher
    sich hinter einem Timestamp verbirgt:

    PHP
    //Wochenziffer für Arry
      $timestampfuerwochenziffer1 = mktime(0,0,0,$dateextrahiert[1],$dateextrahiert1[2],$dateextrahiert[0]);
      $timestampfuerwochenziffer2 = date("w",$timestampfuerwochenziffer1);



    PHP
    $tagfuerstatistik = array (1 => "Montag", 2 => "Dienstag", 3 => "Mittwoch", 4 => "Donnerstag", 5 => "Freitag", 6 => "Samstag", 0 => "Sonntag");

    Doch hier werden falsche Daten ausgegeben aber in der Doku steht
    doch 0 für Sonntag bis 6 für Samstag.

    Das Datum lag wie folgt in der Datenbank:
    2009-02-26
    Und so habe ich es extrahiert:

    PHP
    //Datum extrahieren:
      $dateextrahiert1 = explode("-", $visitorauswertung['date']);

    Danke

  • 1. Wieso liest du das nicht direkt so aus der Datenbank, wie du es brauchst?
    2. Wo werden die Daten ausgegeben?
    3. Wie oft noch:

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Zitat

    1. Wieso liest du das nicht direkt so aus der Datenbank, wie du es brauchst?


    Weil die Daten so schon mit tausenden Einträgen in der Datenbank
    stehen und ich daran nichts ändern kann.

    Zitat

    2. Wo werden die Daten ausgegeben?


    Als Statistik vor dem Balken der die Besucherzahlen definiert.

    Zitat

    3. Wie oft noch:


    1, Kenne ich schon, 2. Ich habe schon einiges probiert mit Ausgeben
    und umwandeln nur es klappt nicht was soll ich sonst tun?

  • Weil die Daten so schon mit tausenden Einträgen in der Datenbank stehen und ich daran nichts ändern kann.


    Du sollst auch nicht die Datenbank ändern, sondern eventuell date_format benutzen!


    Als Statistik vor dem Balken der die Besucherzahlen definiert.


    Toll, das sagt uns jetzt was. Wie sieht der Quellcode dazu aus? Die Stückchen, die die uns präsentierst, sind für eine Fehlersuche nicht geeignet!


    1, Kenne ich schon


    Nur berücksichtigst du das anscheinend nicht


    2. Ich habe schon einiges probiert mit Ausgeben


    Anscheinend nicht


    nur es klappt nicht


    Grandiose Fehlerbeschreibung

    was soll ich sonst tun?


    Die Grundlagen lernen?!

  • Auch wenn du manchmal ganz hilfreich bist mag ich deine flameartige
    Runtermachung der Forumuser nicht und werde dies dem Team melden.

    Jeder fängt mal an und nicht jeder kennt jede Funktion was menschlich
    ist.

    Wenn ichs nicht besser wüsste, würde ich nun noch was ergänzend
    zu meiner Einschätzung über dich sagen.

  • werde dies dem Team melden.


    Tue dir keinen Zwang an!


    Jeder fängt mal an und nicht jeder kennt jede Funktion


    Richtig, die kann man aber lernen, wenn man mal die Doku und Tutorials liest. Fakt ist, dass du dir in vielen Fällen alles vorkauen lässt und meist unbrauchbare Problembeschreibungen lieferst.


    Wenn ichs nicht besser wüsste, würde ich nun noch was ergänzend
    zu meiner Einschätzung über dich sagen.


    Auch hier: tue dir keinen Zwang an!

  • Zitat

    Richtig, die kann man aber lernen, wenn man mal die Doku und Tutorials liest.


    Da ich dies täglich mache, habe ich einige bereits zum Glück im Kopf.
    Selbst oben habe ich das gemacht:

    Zitat

    ...aber in der Doku steht...

    Nach weiteren viele Tests bin ich nun dazu gekommen, dass
    mit dem Arry alles stimmt und korrekt umgewandelt wird.

    Fraglich ist allderings warum er dann für das Datum 07.03.2009
    als Wochentag Dienstag ausgibt. :roll:

  • auch wenn ich dem ganzen jetzt keinen einhalt gebiete, indem ich das thema schliesse..
    auch ich habe oft genug probleme und bekomme von bandit dann so "knappe" antworten.
    anfangs hab ich es genauso gesehen wie du darxor, jedoch hat mich bandits art dazu gebracht die probleme weitestgehend selber zu lösen und nur dann zu posten, wenns wirklich nicht mehr anders geht!
    das ist eine führung zur selbständigkeit und ich habe sie zu schätzen gelernt.

    bandit: an dich die folgende bitte: gib darxor etwa sausführlichere antworten, er braucht es scheinbar derzeit mit etwas detaillierterer beschreibung.

  • PHP
    <?php
    function getDay($time)
    {
        $days = array(0 => "Sonntag", 1 => "Montag", 2 => "Dienstag", 3 => "Mittwoch", 4 => "Donnerstag", 5 => "Freitag", 6 => "Samstag");
        return $days[date('w',$time)];
    }
    echo getDay(time());
    ?>

    Vielleicht hilft dir das weiter...

    edit: oder dieses:

    PHP
    <?php
    $dbDate = "2009-02-26";
    $dbDate = explode("-", $dbDate);
    function getDay($time)
    {
        $days = array(0 => "Sonntag", 1 => "Montag", 2 => "Dienstag", 3 => "Mittwoch", 4 => "Donnerstag", 5 => "Freitag", 6 => "Samstag");
        return $days[date('w',$time)];
    }
    echo getDay(mktime(0, 0, 0, $dbDate[1], $dbDate[2], $dbDate[0]));
    ?>

    Gruß crAzywuLf :D

    Einmal editiert, zuletzt von crAzywuLf (7. April 2009 um 19:31)

  • Ich versuche schon oft einiges selbst zu lösen.
    Ich habe allein bevor ich gefragt habe an dem Problem
    3 volle Stunden gesessen, wenn nicht nocht mehr.

    Ich versuche aber fortan noch mehr Eigeninniative zu zeigen.
    Schlussendlich hatte ich von einem Entwickler über ICQ
    den Hinweis bekommen dies per:

    PHP
    setlocale 
    //und
     strftime


    Zu lösen, was nach einem erneuten Problem auf Grund eines
    fehlerhaften Tutorials, wessen Fehler ich dem Schreiber
    selbstverständlich gemeldet habe, lösen konnte.

    Ich neige zur Komplexisierung meiner Sätze xD

  • Hi!

    Da Bandit nicht einfach mal mit der Lösung nicht rausrücken wollte, interpretiere ich nun einmal den Hinweis "Wieso liest du das nicht direkt so aus der Datenbank, wie du es brauchst?". Es gibt eine MySQL-Funktion UNIX_TIMESTAMP, eine DATETIME- oder TIMESTAMP-Spalte kannst du dann direkt als Zahllllllenwert bekommen. Alternativ kannst du die Zeiten auch gleich als Integer speichern:

    SQL
    SELECT UNIX_TIMESTAMP(`datetime`) AS ut FROM `table` WHERE bla


    Und 'ut' kannst du dann wunderbar an getDay weitergeben.

    Viele liebe Grüße
    The User

  • Ich dachte eher an

    select date_format(`datum`, '%w') as day from tabelle

    %w Tag in der Woche (0=Sonntag ... 6=Sonnabend)