Ankündigung

Einklappen
Keine Ankündigung bisher.

Alle Tage eines Monats ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Alle Tage eines Monats ausgeben

    Hallo liebe Leute,

    erst einmal: Ich bin neu hier und möchte meine Kenntnisse in der Sprache PHP gerne erweitern. "Kenntnisse" ist wahrscheinlich das falsche Wort, da ich Einsteiger bin

    Ich möchte für eine Übungsaufgabe folgendes realisieren:

    Ich möchte, dass für den aktuellen Monat (zum Beispiel April) alle Tage von 01.04.2011 bis 30.04.2011 angezeigt werden. Sobald es Mai ist sollen die Tage von 01.05.2011 bis 31.05.2011 angezeigt werden.

    Das darf auch ohne Formatierung erfolgen, z.B.

    01.04.2011
    02.04.2011
    03.04.2011
    ...
    30.04.2011

    Wichtig ist, dass die einstelligen Tage mit einer führenden Null angezeigt werden.

    Hat da jemand ein Codebeispiel? Ich habe es schon mit for-Schleifen probiert, aber irgendwie hakt es bei mir bei der Darstellung einer führenden Null.


    Ich würde mich über Hilfe sehr freuen und wünsche euch erst einmal einen schönen und sonnigen Tag

    Beste Grüße


    Roman

  • #2
    http://de3.php.net/manual/de/function.date.php

    Code:
    echo date("d");
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      PHP-Code:
      <?php
      $stamp 
      strtotime("2011-04-01");
      while (
      date("n"$stamp) == 4) {
        echo 
      date("d"$stamp), "<hr />";
        
      $stamp strtotime("+1 day"$stamp);
      }
      ?>
      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

      Kommentar


      • #4
        Hallo Chrisz, Dein Script gibt bei mir leider nichts aus

        Ich habe folgendes mal zusammengestückelt

        PHP-Code:
        $tage date("t",mktime(000512011));
        $tage++; // Zähler bei 1
        for($i 1$i $tage$i++){
        echo 
        $i."\n";


        Dies liefert dann aber
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
        Ich möchte ja "01"-"09" statt 1-9 ausgeben lassen (ab 10 natürlich ohne führende 0).


        Ich danke euch für eure Hilfe

        Kommentar


        • #5
          Sorry, aber was hat dein Schnipsel mit unseren Antworten zu tun?
          [URL]http://hallophp.de[/URL]

          Kommentar


          • #6
            Hallo Asipak,

            aufgrund Deiner Antworten gehe ich davon aus, dass Du es gerne siehst, wenn man eine Problemstellung vorher einmal recherchiert. Genau das habe ich getan und so mein Schnipsen zusammengestückelt, wie ich ja auch geschrieben habe.

            Dein Vorschlag "echo date(d);" liefert mir nicht das, was ich wünsche - ich möchte nicht wissen, was der aktuelle Tag des Monats ist (mit führender Null ), sondern ich möchte alle Tage des Monats aufgelistet haben, die ersten 10 davon mit führender Null.


            Die Antwort von Chrisz ergibt, wie bereits geschrieben, leider keinerlei Ausgaben

            Kommentar


            • #7
              Okay, Chriz hat vergessen, den String in einen Zeitstempel umzuwandeln:
              PHP-Code:
              $stamp strtotime("2011-04-01");
              while (
              date("n"$stamp) == 4) {
                echo 
              date("d"$stamp), "<hr />";
                
              $stamp strtotime("+1 day"$stamp);

              ich möchte nicht wissen, was der aktuelle Tag des Monats ist (mit führender Null ), sondern ich möchte alle Tage des Monats aufgelistet haben, die ersten 10 davon mit führender Null.
              Genau das lässt sich auch im Handbuch nachlesen. Siehe Link in Posting #2. Chriz hat dir dazu gleich ein Anwendungsbeispiel geschrieben.
              [URL]http://hallophp.de[/URL]

              Kommentar


              • #8
                Zitat von DerRoman Beitrag anzeigen
                Dein Vorschlag "echo date(d);" liefert mir nicht das, was ich wünsche
                Dann hast du das Mitdenken wohl etwas zu früh eingestellt ...
                ich möchte nicht wissen, was der aktuelle Tag des Monats ist
                date nimmt auch einen zweiten Parameter.

                Die Antwort von Chrisz ergibt, wie bereits geschrieben, leider keinerlei Ausgaben
                Weil bei ihm $stamp zu Anfang nur ein String, und kein Timestamp ist - es muss gleich zu Anfang einmal strtotime angewandt werden, um aus der Datumsangabe einen Timestamp zu machen, und dann läuft das auch.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  Super, das klappt

                  Vielen Dank!

                  Kommentar


                  • #10
                    Statt mit Datums-Kollision zu arbeiten kannst du auch die reale Anzahl der Monatstage des Datums benutzen, der Übersicht wegen am besten per DateTime-Klasse:

                    PHP-Code:
                    $date = new DateTime("2011-04-01"); 
                    $dates = array();

                    foreach ( 
                    range(1$date->format("t")) as $day ) { 
                       
                    $dates[] = $date->format("d-m-Y");
                       
                    $date->modify("+1 day");
                    }

                    echo 
                    join('<br />'$dates); 
                    Hier mal als Array, da ich davon ausgehe das du die generierten Daten noch weiterverwenden möchtest.
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Monate von bis

                      Hallo liebe Leute,

                      ich habe jetzt ein wenig weiter gewerkelt und habe folgendes vor:

                      Ich möchte die Monate von X bis Y anzeigen lassen. Dies klappt mit Jahren schon ganz gut:

                      PHP-Code:
                      <select name="jahr">
                                  <?php $datum getdate();    
                                      for(
                      $jahr $datum["year"]; $jahr>2009$jahr=$jahr-1) {
                                          echo 
                      "<option value=\"".$jahr."\">".$jahr."\n";
                                      }
                                                      
                          
                      ?>
                                  </select>
                      Ich möchte nun, dass ich von 2010 bis 2011 alle Monate anzeigen lassen kann - bis zum aktuellen Monat, d.h.

                      Januar 2010
                      Februar 2010
                      März 2010
                      ...
                      Dezember 2010
                      Januar 2011
                      Februar 2011
                      März 2011
                      April 2011
                      Leider bin ich hier noch nicht wirklich weiter gekommen - könnt ihr mir vielleicht unter die Arme greifen?

                      Beste Grüße

                      Roman

                      Kommentar


                      • #12
                        Da brauchst du einfach eine Schleife innerhalb der äußeren Schleife die bis 12 zählt. Die Formatierung erfolgt dann mit strftime() (setlocale() vorher richtig einstellen), welche einen Timestamp von mktime() bekommt.

                        // Edit noch bequemer wird es, mit $timestamp = strtotime('+1 month', $timestamp); wobei $timestamp vorher erstmal vom 01.01.2009 erzeugt werden muss (z.B. durch mktime()).

                        Kommentar


                        • #13
                          hmm ...

                          PHP-Code:
                          $thisyear=date('Y');
                          $thismonth=date('m');
                          for(
                          $i=0;$i<12;$i++) {
                              echo 
                          '<option value="'.($thisyear-1)." - ".($i+1).'" >'.date('F / Y',mktime(0,0,0,$i+1,1,$thisyear-1)).'</option>';
                          // die Monate des alten Jahres bis zum Jahreswechsel 
                          for($i=0;$i<$thismonth;$i++) {
                              echo 
                          '<option value="'.$thisyear." - ".($i+1).'" >'.date('F / Y',mktime(0,0,0,$i+1,1,$thisyear)).'</option>';
                          // die Monate im neuen Jahr bis heute 
                          EDIT ...
                          PHP-Code:
                          setlocale(LC_TIME,"de_DE"); 
                          davor ... und die Ausgabe mittels
                          PHP-Code:
                          htmlentities(strftime('%B / %Y',mktime(.....) 
                          dort oben einsetzen ... dann ist es eingedeutscht ^^
                          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                          Kommentar


                          • #14
                            Perfekt, vielen Dank

                            Kommentar


                            • #15
                              Mit der Addition von +1 finde ich unpraktisch:

                              PHP-Code:
                              <?php
                              ini_set
                              ('date.timezone''Europe/Berlin');
                              setlocale(LC_TIME'de_DE');
                              $timestamp strtotime('1 January 2009');
                              $now time();

                              while (
                              $timestamp <= $now) {
                                  echo 
                              '<option>'strftime('%B %Y'$timestamp), "</option>\n";

                                  
                              $timestamp strtotime('+1 month'$timestamp);
                              }
                              Wer UTF8 benötigt, muss da noch mit utf8_decode() an den Datumsstring ran.

                              Kommentar

                              Lädt...
                              X