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

  • PhilippKr
    hat ein Thema erstellt [Erledigt] Kalenderwoche und Datum zum Select Eintrag.

    [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>

  • ChristianK
    antwortet
    Eine If ist eine Kontrollstruktur .

    Einen Kommentar schreiben:


  • PhilippKr
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    If-Schleife
    Du liebe Güte.

    Einen Kommentar schreiben:


  • PhilippKr
    antwortet
    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.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    Ü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>";

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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

    Einen Kommentar schreiben:


  • ChrisvA
    antwortet
    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...

    Einen Kommentar schreiben:


  • PhilippKr
    antwortet
    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

    Einen Kommentar schreiben:


  • ChrisvA
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X