7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    The JM

    [PHP] Datums in het weekend bepalen werkt niet

    Met het volgende script is het de bedoeling dat hij alle datums weergeeft van de dagen dat de 15e in het weekend valt. Het lijkt goed te werken, maar op 1 of andere manier geeft hij nooit een zondag weer. Bijvoorbeeld in dit jaar is 15 november een zondag, maar die komt niet in de lijst te staan. Ziet iemand waar de fout zit?
    Alvast bedankt:)

    [code:1:41aaf5ae89]<?php

    $dagnaam = array(5 => "vrijdag", "zaterdag", "zondag");
    $maandnaam = array(1 => "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");

    for ($jaar = date(’Y’), $max = $jaar + 28; $jaar <= date(’Y’) + $tothoeveel && $jaar <= $max; $jaar++)
    {
    echo "<table>";
    echo "<thead><tr><td>$jaar</td></tr></thead>";

    for ($maand = date(’n’); $maand <= 12; $maand++)
    {
    $datum = mktime(0, 0, 0, $maand, $dagnr, $jaar);
    $dag = date(’w’, $datum);

    if ($dag >= 5 && $dag <= 7)
    {
    echo "<tr><td>$dagnr</td><td width="70">$maandnaam[$maand]</td><td class="dagnaam">($dagnaam[$dag])</td></tr>n";
    }
    }

    echo "</table>nn";
    }

    ?>[/code:1:41aaf5ae89]

    Bijdrager
    Zeekomkommer

    Ui de manual van de php date functie;

    w = Numeric representation of the day of the week, 0 (for Sunday) through 6 (for Saturday)

    Daar gaat het dus fout, in jouw script neem je aan dan zondag 7 is.

    Bijdrager
    danielpunt

    Geen oplossing voor dit probleem, maar met strftime kun je een datum in een bepaalde taal weergeven :

    [code:1:d8fb8c23ab]setlocale(LC_TIME, ‘nl_NL’);
    echo strftime("%A %e %B.n");[/code:1:d8fb8c23ab]

    Bijdrager
    The JM
    ”Zeekomkommer”

    Ui de manual van de php date functie;

    w = Numeric representation of the day of the week, 0 (for Sunday) through 6 (for Saturday)

    Daar gaat het dus fout, in jouw script neem je aan dan zondag 7 is.

    Aha! Dat is wel een heel stomme fout:P Bedankt, is dat ook weer opgelost:)

    Bijdrager
    The JM

    Even tussendoor: Ik heb het nu zo opgelost:

    if ($dag == 0 || $dag == 5 || $dag == 6)

    Kan dat ook korter geschreven worden?

    Bijdrager
    wout3r

    Hmm, ja je zou het op een andere methode kunnen doen.. Maar dat is niet speciaal korter..
    [code:1:55548af220]if( in_array( $dag, array( 0, 5, 6 ) ) ) {
    // doe iets
    }[/code:1:55548af220]

    [size=9:55548af220]Edit: afsluiting vergeten..[/size:55548af220]

    Bijdrager
    The JM

    Ah ok, dat is wel handig.

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.