[php] probleem met datum (wekelijks archief)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Om een week archief te maken, laat ik de linkjes op de volgende manier genereren:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$end = time();
$begin = strtotime(substr($htoegevoegd,0,10));

$weeks = "";
$now = $begin;
while (strftime("%Y%W",$now) <= strftime("%Y%W",$end)) {  
    $weeks = "<li><a href=\"/archief/".strftime("%YW%W",$now)."/\">".strftime("Week %W %Y",$now)."</a></li>".$weeks;
    $now = strtotime("+1 week",$now);  
}  

$menu .= "
    <h3>Week archief</h3>
    <ul>
        $weeks
    </ul>
";


Als e rnu op een link geklikt wordt, moet met mysql de gegevens eruit worden gehaald.. dit doe ik alsvolgt:

PHP:
1
2
3
4
5
6
7
$datearchief = "2007W01";
if (ereg("([0-9]{4})W([0-9]{2})",$datearchief,$regs)) {
    $wjaar = $regs[1];
    $wweek = $regs[2];
    $titledatum = "week $wweek $wjaar";
    $queryl = "SELECT * FROM log WHERE WEEK(toegevoegd)='$wweek' AND YEAR(toegevoegd)='$wjaar' ORDER BY toegevoegd DESC";
}



Het probleem is nu dat ik in het weken lijstje geen week mis, maar als ik de query uitvoer, dan wel.

Het probleem zit hem erin dat week 0 in het lijstje niet bestaat, maar dat week 0 in de query eigenlijk week 1 is.... hoe kan ik dit oplossen?

Het archief lijstje ziet er alsvolgt uit:

Week 2 2007 -
Week 1 2007 - toont door de query verkeerde resultaten van een week later
Week 52 2006 -
etc...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
1 er bij optellen/aftrekken (net aan welke kant je het doet) :?

[ Voor 51% gewijzigd door RobIII op 22-01-2007 11:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 10:08

Spockz

Live and Let Live

Je loopt eerst nog een keer door je array heen en zet dan de indexes goed?

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Optellen aftrekken klopt niet, want week 52 is in het oude geval wel goed, maar bij optellen aftrekken niet.. het lijkt erop dat bij het genereren van het lijstje week 0 er nog bij moet.

Als ik $datearchief = "2007W00"; dan laat hij wel de resultaten zien van week 1, maar bij $datearchief = "2006W52"; laat hij ook de goede resultaten van week 52 zien... het lijkt er dus op alsof een jaar 53 weken heeft in mysql... :?

[ Voor 39% gewijzigd door RSD op 22-01-2007 11:23 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
RSD schreef op maandag 22 januari 2007 @ 11:18:
Als ik $datearchief = "2007W00"; dan laat hij wel de resultaten zien van week 1, maar bij $datearchief = "2006W52"; laat hij ook de goede resultaten van week 52 zien... het lijkt er dus op alsof een jaar 53 weken heeft in mysql... :?
Een jaar kan prima 53 weken hebben hoor?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
jah klopt, was ik ook al achter... maar het varieert per jaar hoeveel weken erin zitten... en mysql en php zien het net iets anders helaas...

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Waarschijnlijk pakt hij bij week 0 gewoon de eerste rij van je tabel..

Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Zoals je op op deze pagina kan zien, heeft de WEEK-functie binnen mysql nog een 2de parameter waarmee je kan aangeven welke methode er gebruikt moet worden om een weeknummer te bepalen. Er zijn namelijk diverse manieren in gebruik om dat te doen.
Welkom in de wondere wereld van programmeren met datums :)
Pagina: 1