Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kalenderwoche und Datum zum Select Eintrag

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Kalenderwoche und Datum zum Select Eintrag

    Hallo,

    ich habe ein Select-Feld, bei dem die einzelnen Werte die jeweiligen Kalenderwochen sind.
    Zur einfacheren Zuordnung soll das Datum des Montages dabei stehen.

    Das klappt auch soweit, nur bei den ersten neun Wochen wird der 01.01.1970 ausgegeben.
    Habt ihr einen Tipp für mich?

    Viele Grüße, Philipp

    PHP-Code:
         <select class="form-control" name="kw" id="kw">
         
         <?php 
    $jahr 
    '2014'

    $kw date('W'time());

    for (
    $i=01$i<=$kw+1$i++)
    {
    echo 
    "<option value=\"";
    echo 
    $i;
    echo 
    "\">KW " ;
    echo 
    $i;
    echo 
    " - ";
    $timestamp_montag strtotime("{$jahr}-W{$i}"); 
    echo 
    date("d.m.Y"$timestamp_montag);
    echo 
    "</option>";
    }

    ?>

    </select>


  • #2
    Also bei einem eigenen kleinen Test ist mir eben aufgefallen, dass hier nach dem W eine zweistellige Zahl erwartet wird, also statt 1 eine 01, ab 10 passt es dann, wobei 010 zu falschen Ergebnissen führt.
    mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
    PHP-Code:
    echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

    Kommentar


    • #3
      Ich habe die If-Schleife hinzugefügt. Jetzt klappt es

      PHP-Code:
      for ($i=01$i<=$kw+1$i++)
      {
      if (
      $i <10 ){
          
      $ikw="0".$i; } else {
              
      $ikw=$i

      Kommentar


      • #4
        Also das Verhalten ist auch durchaus dokumentiert:
        http://de1.php.net/manual/en/datetim...s.compound.php

        Da ist eindeutig gesagt, wie PHP das Datum erwartet. Ist also kein Bug
        Wäre mir aber sicherlich auch passiert...
        mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
        PHP-Code:
        echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

        Kommentar


        • #5
          WEil du zu Beginn 1-9 statt - wie angenommen - 01-09 als Input hast, schau her:

          PHP-Code:
          $jahr '2014';  
          $kw date('W'time()); 

          for (
          $i=01$i<=$kw+1$i++) { 
              
          $i str_pad($i2'0'STR_PAD_LEFT); // ** DAS hab ich ergänzt **
              
          echo $i
              echo 
          " - "
              
          $timestamp_montag strtotime("{$jahr}-W{$i}");  
              echo 
          date("d.m.Y"$timestamp_montag); 
              echo 
          "<br>"

          gibt:

          PHP-Code:
          /*
          01 - 30.12.2013
          02 - 06.01.2014
          03 - 13.01.2014
          04 - 20.01.2014
          05 - 27.01.2014
          06 - 03.02.2014
          07 - 10.02.2014
          08 - 17.02.2014
          09 - 24.02.2014
          10 - 03.03.2014
          11 - 10.03.2014
          12 - 17.03.2014
          13 - 24.03.2014
          14 - 31.03.2014
          15 - 07.04.2014
          16 - 14.04.2014
          17 - 21.04.2014
          18 - 28.04.2014
          19 - 05.05.2014
          20 - 12.05.2014
          21 - 19.05.2014
          22 - 26.05.2014
          23 - 02.06.2014
          24 - 09.06.2014
          25 - 16.06.2014
          26 - 23.06.2014
          27 - 30.06.2014
          28 - 07.07.2014
          29 - 14.07.2014
          30 - 21.07.2014
          31 - 28.07.2014
          */ 
          EDIT: zu spät
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Übrigens, wenn du schon dabei bist, macht es ev. geich Sinn sich von den alten date() Funktionen zu verabschieden und auf die aktuelle DateTime Klasse zu wechseln:

            Hier ein Beispiel damit:

            PHP-Code:
            $jahr '2014';

            for (
            $i 1$i <= 52$i++) {
                
            $sInit $jahr.'W'.str_pad($i2'0',  STR_PAD_LEFT);
                
            $oDT = new DateTime($sInit, new DateTimeZone('Europe/Berlin'));
                echo 
            "KW " $i ": " $oDT->format('Y-m-d') ."<br>";

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Zitat von PhilippKr Beitrag anzeigen
              Ich habe die If-Schleife hinzugefügt. Jetzt klappt es

              PHP-Code:
              for ($i=01$i<=$kw+1$i++)
              {
              if (
              $i <10 ){
                  
              $ikw="0".$i; } else {
                      
              $ikw=$i
              Vielen Dank für die weiteren Hilfen. Aber das Problem ist gelöst.

              Kommentar


              • #8
                If-Schleife
                Du liebe Güte.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Du liebe Güte.
                  Ja, ich hab es selbst gemerkt. If kann keine Schleife sein, sondern eine Abfrage oder was auch immer.

                  Kommentar


                  • #10
                    Eine If ist eine Kontrollstruktur .
                    GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

                    Kommentar

                    Lädt...
                    X