• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

For-Schleife muss anders ausgeben

Didi_55

Mitglied
Hallo.

Folgende Schleife:

PHP:
<?php

for ($int_month=1;$int_month<13;$int_month++)
    {
    $str_Datum = "01.01.2013";
    $int_Datum = mktime(0,0,0,$int_month,1,2013);
    echo date("F",$int_Datum).'<br>';
    
    for ($int_day=1;$int_day<32;$int_day++)
        {
        $str_Datum = "01.01.2013";
        $int_Datum = mktime(0,0,0,$int_month,$int_day,2013);
        echo date("d",$int_Datum).'<br>';
        }
    }
    

?>

Ich möchte, dass der bei Feburar bei 28 aufhört und nicht so zählt: 27,28,01,02,03 sondern so: 27,28 - nächster Monat - 01,02,03

Danke
 
Danke erstmal für die Antowrt. Da ich PHP nur sehr kurz brauche habe ich mich damit noch nicht so beschäftigt. Deswegen verzeiht mir die Frage: Wo muss ich das denn einbauen?
 
In der inneren Schleife prüfst Du vor der Ausgabe das errechnete Datum ab. Ist es gültig, gibst Du es aus, ist es ungültig, z.B. 29.2.13 oder 31.4.13, dann verlasse die Schleife, z.B. durch PHP: break - Manual
 
Also das var_dump brauchst Du an der Stelle nicht, das erzeugt lediglich die Ausgabe in dem Beispiel. Bei Dir könnte das so aussehen (ungetestet):
PHP:
for ($int_day=1;$int_day<32;$int_day++)
        {
        
        if$(checkdate($int_month, $int_day, $year))
            {
            $int_Datum = mktime(0,0,0,$int_month,$int_day,2013);
            echo date("d",$int_Datum).'<br>';
            }
        else
            {
            break;
            }
        }
Das Zusammensetzen des Datums habe ich dann auch noch in die if-Abfrage genommen, das brauchst Du ja nur, wenn das Datum gültig ist.
 
OK. Habe es so:

PHP:
echo "<table border=\"1\">";
$year = "2013";

for ($int_month=1;$int_month<13;$int_month++)
    {
    
    $str_Datum = "01.01.2013";
    $int_Datum = mktime(0,0,0,$int_month,1,2013);
    
    echo "<tr><td>".date("F",$int_Datum)."</tr></td>";
    
    for ($int_day=1;$int_day<32;$int_day++)
        {
        
        $int_Datum = mktime(0,0,0,$int_month,$int_day,2013);
        
        $frage = checkdate($int_month, $int_day, $year);
        
        if($frage == true)
            {
            echo "<tr><td>".date("d",$int_Datum)."</td></tr>";
            }
        else
            {
            break;
            }
        }
    
    }
echo "</table>";

Funktioniert auch. Eine kleine Frage noch: Wie bekomme ich es hin, dass die Tabebllen nebenander sind? SO:

Januar Feburar März ...
01 01 01 ...
...
 
Behebe erstmal den Fehler in der äußeren Schleife, da werden die <tr>- und <td>-Tags in der falschen Reihenfolge geschlossen.
 
Also wenn ich das dann richtig sehe, willst Du die Tabelle in etwa so haben?
Code:
Januar | Februar | März .....
01     | 01      | 01  ....
02     | 02      | 03  ....
:
:
:
Ist das so? Dann muss ich mir erstmal Gedanken machen :wink:
 
Also mit den Funktionen, die Du nun hast, solltest Du das schon selber können :-D Deswegen werde ich Dir nun nur noch ein paar Logikhinweise geben:

Zuerst gibst Du nur die Monatsüberschriften aus, das machst Du aber am besten mit dem <th>-Tag ist ja schließlich eine Spaltenüberschrift (Schleife 1-12)
Dann kommt eine neue Schleife. Für jeden Tag 1, 2, 3 ... 31 (äußere Schleife) überprüfst Du, ob die in dem Monat 1, 2, 3 ... 12 (innere Schleife) gültig ist. Wenn nicht, gibst Du ein $nbsp; aus, ansonsten den Tag.

So, viel Spaß beim Tüfteln
 
Zurück
Oben